{$CLEO .x}
{$include ../SAAdox.h}          
{$include ../OpenGL.h}          
{$include ../menu.h}          

                                                           
if or
gameVersion == 108
gameVersion == 200
gameVersion == 210
then              
    getAddres()
    CGameBuffer()
    CLoadScripts()
    call.1r( @logsetcurrent, @CLoadScripts_LOG)
    
    CValueConfiguration()
    call.1r( @logsetcurrent, @CValueConfiguration_LOG)

    getObjInfo()
    menu()
    call.1r( @logsetcurrent, @menu_LOG)

    patchSystem()
    call.1r( @logsetcurrent, @patchSystem_LOG)

    MemoryAddres_Setting()
    call.1r( @logsetcurrent, @MemoryAddres_Setting_LOG)
    //..Render ->    
    initEGL() // init opengl function
    
    PatchGLCALL() // onload shader uniform? patch
    
    reinitRQ() // modified buffer size   
    
    008A: renderQueue_ptr = $3173
    ARM._(LDR renderQueue, renderQueue_ptr)
        
    init_RQ() // rqinsert
    call.1r( @logsetcurrent, @init_RQ_LOG)
            
    init_GL_PUSH()
    call.1r( @logsetcurrent, @init_GL_PUSH_LOG)
    
    flushGLCommand() // rqInit

    call.1r( @logsetcurrent, @flushGLCommand_LOG)
    
    patchRender()
    init_RwRaster()
    call.1r( @logsetcurrent, @init_RwRaster_LOG)
    
    fastCall.2r($15046, 640, 640) // resolution init
    call.1r( @logsetcurrent, @ALLDONE_LOG)        
    ///////////////////////////////////////////    
end    
script.return()

:patchRender
init_glTextureBuffer() // bind texture set limit
if gameVersion == 108
then
    call.2r( @longPatch, 0x240C24, @cmp4mtx)

    /*                          FOR MODDED SHADER                           */
    //////////////////////////////////////////////////////////////////////////
    // shader mod
    // patch assigned shader mod
    isShaderMod = 0
    call.2r( @longPatch, 0x53D280, @assimod)
    0@ = var.pointer(isShaderMod)
    ARM.memprotect2(0x53D290, 0@, 4)
    
    ARM.memprotect2(0x195172, 0xF885F3A8, 4)
    ARM.memprotect2(0x1950A4, 0xF8ECF3A8, 4)
    
    //
    call.2r( @longPatch, 0x53D294, @glValueable)
    0@ = var.pointer(isVehicleRender) // isVehicle
    ARM.memprotect2(0x53D320, 0@, 4)
    0@ = var.pointer(VehicleShader)
    ARM.memprotect2(0x53D324, 0@, 4)
    0@ = var.pointer(BuildingShader)
    ARM.memprotect2(0x53D328, 0@, 4)
    0@ = var.pointer(CharacterShader)
    ARM.memprotect2(0x53D32C, 0@, 4)
    0@ = var.pointer($16100[3]) // tex div
    ARM.memprotect2(0x53D330, 0@, 4)
    0@ = operator.int(0x612850, "+", g_libGTASA)
    ARM.memprotect2(0x53D334, 0@, 4) // curShader
    
    // vehicle shader mod
    isVehicleRender = 0
    call.2r( @longPatch, 0x24099C, @smdv)
    0@ = var.pointer(isVehicleRender)
    ARM.memprotect2(0x2409B0, 0@, 4)
    ARM.memprotect2(0x28B648, 0xF9A8F7B5, 4)
       
       
    // shader mod 2
    call.2r( @longPatch, 0x39B6EC, @sdrmod)       
    isShaderMod2 = 0
    0@ = var.pointer(isShaderMod2)
    ARM.memprotect2(0x39B710, 0@, 4)
    
    ARM.memprotect2(0x198C0A, 0x1C18, 2)
    ARM.memprotect2(0x198C0C, 0xFD6EF202, 4)
    ARM.memprotect2(0x198C10, NOP, 2)
    ///////////////////////////////////////////////////////////
    /*                          ANOTHER ENVIRONMENT STUFF                          */
    /////////////////////////////////////////////////////////////////////////////////
    //Reset Env Map    
    ARM._(STR 0, envMapCoefficient)
    call.2r( @longPatch, 0x28AA84, @renvmap)
    ARM.memprotect2(0x28AA8C, envMapCoefficient, 4)           
    
    // env map    
    call.2r( @longPatch, 0x197CC4, @senvmap)
    ARM.memprotect2(0x197CCC, envMapCoefficient, 4)           
    ARM.memprotect2(0x28AA24, 0x81F0E8BD, 4)
    ARM.memprotect2(0x28AA1E, 0x0A, 1)
    ARM.memprotect2(0x28AA4C, 0xE00C, 4)
    ARM.memprotect2(0x28AA6C, 0xBD98, 2)          
    
    // clear car lod
    call.2r( @longPatch, 0x1CF6D8, @clrclod)
    0@ = operator.int(0x6100A4, "+", g_libGTASA)
    ARM.memprotect2(0x1CF6E8, 0@, 4)
    ARM.memprotect2(0x3EF53C, 0xF8CCF5E0, 4)
    
    // weapon render update
    call.2r( @longPatch, 0x54DCF4, @arm_WeaponRenderUpdate)
    0@ = operator.int(0x9E2774, "+", g_libGTASA)
    ARM.memprotect2(0x54DD2C, 0@, 4)
    
    // color interpolar
    call.2r( @longPatch, 0x18D76C, @secondvertexcolor)
    0@ = operator.int(0x6118E0, "+", g_libGTASA)
    ARM.memprotect2(0x18D7A8, 0@, 4) 
    0@ = operator.int(0x61572C, "+", g_libGTASA)
    ARM.memprotect2(0x18D7AC, 0@, 4) 
    
    // texture matrix
    call.2r( @longPatch, 0x1C7414, @texmatanim)
    ARM.memprotect2(0x19BCA6, 0xFBB5F02B, 4)
    ARM.memprotect2(0x19BCBE, 0xBBA9F02B, 4)
    
    0@ = var.pointer(isTextureMatrix)
    ARM.memprotect2(0x1C742C, 0@, 4)    
    
    // set is texture alpha
    call.2r( @longPatch, 0x1C37A4, @istexAlpha)
    0@ = var.pointer(isTexAlpha)
    ARM.memprotect2(0x1C37CC, 0@, 4)
    
    ARM.memprotect2(0x1C38C4, 0x2001, 2)
    ARM.memprotect2(0x1C38C6, 0xBF6DF7FF, 4)
    ARM.memprotect2(0x1C38CA, 0x2000, 2)
    ARM.memprotect2(0x1C38CC, 0xBF6AF7FF, 4)    
    ARM.memprotect2(0x186208, 0xBB5CF03D, 4)
    ARM.memprotect2(0x1861E6, 0xBB70F03D, 4)
        
    //rqGLTenParam   
    2@ = operator.int(0x1C6A79, "+", g_libGTASA)
    008B: 1@ = renderQueue
    1@ += 0x24C
    ARM._(STR 2@, 1@) //rqGLTenParam  
    call.2r( @longPatch, 0x1C6A78, @tenGL)
    
    // objectComponent function
    call.2r( @longPatch, 0x1D18B0, @objcf)
    ARM.memprotect2(0x1D18C8, CObjs_Buff, 4)
    0@ = operator.int(EternalChar, "+", 256)
    ARM.memprotect2(0x1D18CC, 0@, 4)
    
    /*-> implement */
    ARM.memprotect2(0x391E3C, 0x8C60, 2)
    ARM.memprotect2(0x391E3E, 0xFD37F63F, 4)
    ARM.memprotect2(0x391E42, 0xE006, 2)
    ARM.memprotect2(0x391E72, 0x4916, 2)    
    ARM.memprotect2(0x391E74, 0x2000, 2)    
    ARM.memprotect2(0x391E76, 0x6008, 2)    
    ARM.memprotect2(0x391E78, 0x6048, 2)
    ARM.memprotect2(0x391E7A, 0xE004, 2)
    0@ = operator.int(EternalChar, "+", 256)
    ARM.memprotect2(0x391ECC, 0@, 4)
   else
    if gameVersion == 200
    then
        call.2r( @longPatch, 0x2794AC, @cmp4mtx)

        /*                          FOR MODDED SHADER                           */
        //////////////////////////////////////////////////////////////////////////
        // shader mod
        // patch assigned shader mod
        isShaderMod = 0
        call.2r( @longPatch, 0x5B4124, @assimod200)
        0@ = var.pointer(isShaderMod)
        ARM.memprotect2(0x5B4134, 0@, 4)
        
        ARM.memprotect2(0x1BCF3C, 0xF8F2F3F7, 4)
        ARM.memprotect2(0x1BCFE6, 0xF89DF3F7, 4)
        
        //
        call.2r( @longPatch, 0x5B4138, @glValueable)
        0@ = var.pointer(isVehicleRender) // isVehicle
        ARM.memprotect2(0x5B41C4, 0@, 4)
        0@ = var.pointer(VehicleShader)
        ARM.memprotect2(0x5B41C8, 0@, 4)
        0@ = var.pointer(BuildingShader)
        ARM.memprotect2(0x5B41CC, 0@, 4)
        0@ = var.pointer(CharacterShader)
        ARM.memprotect2(0x5B41D0, 0@, 4)
        0@ = var.pointer($16100[3]) // tex div
        ARM.memprotect2(0x5B41D4, 0@, 4)
        0@ = operator.int(0x6B4580, "+", g_libGTASA)
        ARM.memprotect2(0x5B41D8, 0@, 4) // curShader
        
        // vehicle shader mod
        isVehicleRender = 0
        call.2r( @longPatch, 0x279306, @smdv200)
        0@ = var.pointer(isVehicleRender)
        ARM.memprotect2(0x27931C, 0@, 4)
        ARM.memprotect2(0x2CBE7C, 0xFA43F7AD, 4)           
           
        // shader mod 2
        call.2r( @longPatch, 0x3F70F0, @sdrmod)       
        isShaderMod2 = 0
        0@ = var.pointer(isShaderMod2)
        ARM.memprotect2(0x3F7114, 0@, 4)
        ARM.memprotect2(0x1C0854, 0xFC4CF236, 4)
        ARM.memprotect2(0x1C0858, 0xB002, 2)
        ARM.memprotect2(0x1C085A, 0x8B04F85D, 4)
        ARM.memprotect2(0x1C085E, 0xBDF0, 2)
        ///////////////////////////////////////////////////////////
        /*                          ANOTHER ENVIRONMENT STUFF                          */
        /////////////////////////////////////////////////////////////////////////////////
        //Reset Env Map    
        ARM._(STR 0, envMapCoefficient)
        call.2r( @longPatch, 0x2CAA74, @renvmap)
        ARM.memprotect2(0x2CAA7C, envMapCoefficient, 4)           
        
        // env map    
        call.2r( @longPatch, 0x1C052C, @senvmap)
        ARM.memprotect2(0x1C0534, envMapCoefficient, 4)
        ARM.memprotect2(0x2CAA4A, 0x0A10EE10, 4)
        ARM.memprotect2(0x2CAA52, 0xE007, 2)
        
        ARM.memprotect2(0x2CB01E, NOP, 2)
        ARM.memprotect2(0x2CB032, 0x1C08, 2)          
        ARM.memprotect2(0x2CB030, NOP, 2)
        
        // clear car lod
        call.2r( @longPatch, 0x202C70, @clrclod200)
        0@ = operator.int(0x6B1310, "+", g_libGTASA)
        ARM.memprotect2(0x202C80, 0@, 4)
        ARM.memprotect2(0x454F5A, 0xFE89F5AD, 4)
        
        // weapon render update
        call.2r( @longPatch, 0x5C5048, @arm_WeaponRenderUpdate200)
        0@ = operator.int(0xA84138, "+", g_libGTASA)
        ARM.memprotect2(0x5C5084, 0@, 4)
        
        // color interpolar
        call.2r( @longPatch, 0x1B4E90, @secondvertexcolor)
        0@ = operator.int(0x6B32A0, "+", g_libGTASA)
        ARM.memprotect2(0x1B4ECC, 0@, 4) 
        0@ = operator.int(0x6B7094, "+", g_libGTASA)
        ARM.memprotect2(0x1B4ED0, 0@, 4) 
        
        // texture matrix
        call.2r( @longPatch, 0x1FA050, @texmatanim200)
        0@ = var.pointer(isTextureMatrix)
        ARM.memprotect2(0x1FA068, 0@, 4)    
        
        ARM.memprotect2(0x1C47D8, 0xFC3AF035, 4)
        ARM.memprotect2(0x1C4840, 0xBC06F035, 4)
        
        
        // set is texture alpha
        call.2r( @longPatch, 0x1F3678, @istexAlpha200)
        0@ = var.pointer(isTexAlpha)
        ARM.memprotect2(0x1F36A0, 0@, 4)
        
        ARM.memprotect2(0x1F3968, 0x2001, 2)
        ARM.memprotect2(0x1F396A, 0xBE85F7FF, 4)
        ARM.memprotect2(0x1F396E, 0x2000, 2)
        ARM.memprotect2(0x1F3970, 0xBE82F7FF, 4)    
        ARM.memprotect2(0x1AEEE6, 0xBD3FF044, 4)
        ARM.memprotect2(0x1AEF04, 0xBD33F044, 4)
            

        //rqGLTenParam   
        2@ = operator.int(0x1F93C1, "+", g_libGTASA)
        008B: 1@ = renderQueue
        1@ += 0x24C
        ARM._(STR 2@, 1@) //rqGLTenParam  
        call.2r( @longPatch, 0x1F93C0, @tenGL)

        // objectComponent function
        call.2r( @longPatch, 0x204748, @objcf)
        ARM.memprotect2(0x204760, CObjs_Buff, 4)
        0@ = operator.int(EternalChar, "+", 256)
        ARM.memprotect2(0x204764, 0@, 4)        

        /*-> implement */
        ARM.memprotect2(0x3ED250, 0xFA7AF617, 4)
        ARM.memprotect2(0x3ED254, 0xE00D, 2)
        ARM.memprotect2(0x3ED244, NOPH, 4)
        ARM.memprotect2(0x3ED2E6, 0x4912, 2)
        ARM.memprotect2(0x3ED2E8, 0x2000, 2)
        ARM.memprotect2(0x3ED2EA, 0x6008, 2)
        ARM.memprotect2(0x3ED2EC, 0x6048, 2)
        ARM.memprotect2(0x3ED2EE, 0xE00C, 2)
        0@ = operator.int(EternalChar, "+", 256)
        ARM.memprotect2(0x3ED330, 0@, 4)
       else
        if gameVersion == 210
        then
            call.2r( @longPatch, 0x27945C, @cmp4mtx)
    
            /*                          FOR MODDED SHADER                           */
            //////////////////////////////////////////////////////////////////////////
            // shader mod
            // patch assigned shader mod
            isShaderMod = 0
            call.2r( @longPatch, 0x5B4194, @assimod210)
            0@ = var.pointer(isShaderMod)
            ARM.memprotect2(0x5B41A4, 0@, 4)
            
            ARM.memprotect2(0x1BCEBC, 0xF96AF3F7, 4)
            ARM.memprotect2(0x1BCF66, 0xF915F3F7, 4)
            
            //
            call.2r( @longPatch, 0x5B41A8, @glValueable)
            0@ = var.pointer(isVehicleRender) // isVehicle
            ARM.memprotect2(0x5B4234, 0@, 4)
            0@ = var.pointer(VehicleShader)
            ARM.memprotect2(0x5B4238, 0@, 4)
            0@ = var.pointer(BuildingShader)
            ARM.memprotect2(0x5B423C, 0@, 4)
            0@ = var.pointer(CharacterShader)
            ARM.memprotect2(0x5B4240, 0@, 4)
            0@ = var.pointer($16100[3]) // tex div
            ARM.memprotect2(0x5B4244, 0@, 4)
            0@ = operator.int(0x6B4580, "+", g_libGTASA)
            ARM.memprotect2(0x5B4248, 0@, 4) // curShader

            
            // vehicle shader mod
            isVehicleRender = 0
            call.2r( @longPatch, 0x2792B6, @smdv210)
            0@ = var.pointer(isVehicleRender)
            ARM.memprotect2(0x2792CC, 0@, 4)
            ARM.memprotect2(0x2CBEEC, 0xF9E3F7AD, 4)           
               
            // shader mod 2
            call.2r( @longPatch, 0x3F7140, @sdrmod)       
            isShaderMod2 = 0
            0@ = var.pointer(isShaderMod2)
            ARM.memprotect2(0x3F7164, 0@, 4)
            
            ARM.memprotect2(0x1C07D4, 0xFCB4F236, 4)
            ARM.memprotect2(0x1C07D8, 0xB002, 2)
            ARM.memprotect2(0x1C07DA, 0x8B04F85D, 4)
            ARM.memprotect2(0x1C07DE, 0xBDF0, 2)
            ///////////////////////////////////////////////////////////
            /*                          ANOTHER ENVIRONMENT STUFF                          */
            /////////////////////////////////////////////////////////////////////////////////
            //Reset Env Map    
            ARM._(STR 0, envMapCoefficient)
            call.2r( @longPatch, 0x2CAAE4, @renvmap)
            ARM.memprotect2(0x2CAAEC, envMapCoefficient, 4)           
            
            // env map    
            call.2r( @longPatch, 0x1C04AC, @senvmap)
            ARM.memprotect2(0x1C04B4, envMapCoefficient, 4)
            ARM.memprotect2(0x2CAABA, 0x0A10EE10, 4)
            ARM.memprotect2(0x2CAAC2, 0xE007, 2)
            
            ARM.memprotect2(0x2CB08E, NOP, 2)
            ARM.memprotect2(0x2CB0A2, 0x1C08, 2)          
            ARM.memprotect2(0x2CB0A0, NOP, 2)
            
            // clear car lod
            call.2r( @longPatch, 0x202BF0, @clrclod210)
            0@ = operator.int(0x6B1310, "+", g_libGTASA)
            ARM.memprotect2(0x202C00, 0@, 4)
            ARM.memprotect2(0x454FBE, 0xFE17F5AD, 4)
            
            // weapon render update
            call.2r( @longPatch, 0x5C5098, @arm_WeaponRenderUpdate200)
            0@ = operator.int(0xA84138, "+", g_libGTASA)
            ARM.memprotect2(0x5C50D4, 0@, 4)
            
            // color interpolar
            call.2r( @longPatch, 0x1B4E10, @secondvertexcolor)
            0@ = operator.int(0x6B32A0, "+", g_libGTASA)
            ARM.memprotect2(0x1B4E4C, 0@, 4) 
            0@ = operator.int(0x6B7094, "+", g_libGTASA)
            ARM.memprotect2(0x1B4E50, 0@, 4) 
            
            // texture matrix
            call.2r( @longPatch, 0x1F9FD0, @texmatanim210)
            0@ = var.pointer(isTextureMatrix)
            ARM.memprotect2(0x1F9FE8, 0@, 4)    
            
            ARM.memprotect2(0x1C4758, 0xFC3AF035, 4)
            ARM.memprotect2(0x1C47C0, 0xBC06F035, 4)
                        
            // set is texture alpha
            call.2r( @longPatch, 0x1F35F8, @istexAlpha200)
            0@ = var.pointer(isTexAlpha)
            ARM.memprotect2(0x1F3620, 0@, 4)
            
            ARM.memprotect2(0x1F38E8, 0x2001, 2)
            ARM.memprotect2(0x1F38EA, 0xBE85F7FF, 4)
            ARM.memprotect2(0x1F38EE, 0x2000, 2)
            ARM.memprotect2(0x1F38F0, 0xBE82F7FF, 4)
                
            ARM.memprotect2(0x1AEE66, 0xBD3FF044, 4)
            ARM.memprotect2(0x1AEE84, 0xBD33F044, 4)
                
    
            //rqGLTenParam   
            2@ = operator.int(0x1F9341, "+", g_libGTASA)
            008B: 1@ = renderQueue
            1@ += 0x24C
            ARM._(STR 2@, 1@) //rqGLTenParam  
            call.2r( @longPatch, 0x1F9340, @tenGL)
            
            // objectComponent function
            call.2r( @longPatch, 0x2046C8, @objcf)
            ARM.memprotect2(0x2046E0, CObjs_Buff, 4)
            0@ = operator.int(EternalChar, "+", 256)
            ARM.memprotect2(0x2046E4, 0@, 4)        
            
            /*-> implement */
            ARM.memprotect2(0x3ED2A0, 0xFA12F617, 4)
            ARM.memprotect2(0x3ED2A4, 0xE00D, 2)
            ARM.memprotect2(0x3ED294, NOPH, 4)
            ARM.memprotect2(0x3ED336, 0x4912, 2)
            ARM.memprotect2(0x3ED338, 0x2000, 2)
            ARM.memprotect2(0x3ED33A, 0x6008, 2)
            ARM.memprotect2(0x3ED33C, 0x6048, 2)
            ARM.memprotect2(0x3ED33E, 0xE00C, 2)
            0@ = operator.int(EternalChar, "+", 256)
            ARM.memprotect2(0x3ED380, 0@, 4)
            
        end
    end 
end
RQTweak() // tweak render
CNormal() // make normal
return

:reinitRQ
ARM._(LDR 0@, $3173)
0@ += 612
ARM._(LDR 2@, 0@)
0@ -= 0x04
ARM._(LDR 3@, 0@)
0062: 2@ -= 3@
if 2@ < 0x700000
then
    if gameVersion == 108
    then
        //Reinit Rq patch
        ARM.memprotect2(0x1A7EF2, 0x00E0F44F, 4)
        ARM.memprotect2(0x1A7EF6, 0x00E0F44F, 4)
        ARM.memprotect2(0x1A7F34, 0x00E0F44F, 4)
        ARM.memprotect2(0x1A7F38, 0x00E0F44F, 4)
    end
            
    fastCall.0r($3174)        
    call.1r( @logsetcurrent, @rq_isReload)
end
return

:getObjInfo
0@ = script.getOffset(@Objs_f)
call.1r( @ReadFileConfiguration, 0@)
008A: CObjs_f = RET

CObjs_type = script.getOffset(@Objs_type)

008B: v40 = CObjs_f

while true
    call.1r( @obj_SkipLine_, v40)
    008B: v40 = RET
    
    // check if it endl?
    ARM._(LDR 0@, v40)
    if 0@ == 0x6C646E65
    then
        break
    end
    
    
    // get value
    call.1r( @obj_getVal, v40)    


    // get obj id
    0@ = operator.int(EternalChar, "+", 1024);
    1@ = operator.int(EternalChar, "+", 256);
    fastCall.2r($15361, 0@, 1@)
    
    // insert value
    2@ = operator.int(EternalChar, "+", 0)
    3@ = operator.int(EternalChar, "+", 4)
    ARM._(LDR R0, 2@)
    008D: R0 = R0 to_float
    ARM._(LDR R1, 3@)
    
    
    0@ = operator.int(EternalChar, "+", 256);
    ARM._(LDRH 0@, 0@)
    0@ *= 8
    005A: 0@ += CObjs_Buff
    ARM._(STR R0, 0@)
    0@ += 0x04  
    ARM._(STR R1, 0@)        


    // set nexr line
    repeat
        1301: LDRB 0@ v40
        v40++
    until 0@ == 0x0A
end
return

:obj_getVal
// b, t, p
1@ = operator.int(EternalChar, "+", 1024);
2@ = operator.int(EternalChar, "+", 0)
3@ = operator.int(EternalChar, "+", 4)
fastCall.5r(sscanf, 0@, CObjs_type, 1@, 2@, 3@)
return    

:obj_SkipLine_
008A: $4 = RET
while true

    // space or null
    1301: LDRB v1 $4
    while true
        if or 
        v1 == 0x20
        v1 == 0x00
        then
            $4++
            ARM._(LDRB v1, $4)
           else
            break 
        end
    end

    // set comment
    v10 = script.getOffset( @CommentLine )
    1301: LDRB v1 $4
    repeat
        1301: LDRB v2 v10
        if 003A: v2 == v1
        then
            if v2 == 0x0A
            then
                $4++
                break
               else
                repeat
                    1301: LDRB v1 $4
                    $4++
                until v1 == 0x0A
                break 
            end    
        end
        v10++    
    until v2 == 0
    
    008B: RET = $4
    
    if v2 == 0
    then
        return
    end
end
return
     
:setLimitLight
0@ = 48
0@ *= 255
call.1r( @malloc, 0@)
ARM.memprotect2(0x5CED54, 0@, 4)

ARM.memprotect2(0x53AB66, 255, 1)

ARM.memprotect2(0x53AAF2, 0xF3, 1)
return          

:RQTweak
if gameVersion == 108
then
    // Matrix Uniform tweak 
    ARM.memprotect2(0x1A2C30, 0xFFF8F09D, 4)
    
    // RenderIndex
    call.2r( @longPatch, 0x1A2474, @riproc)
    0@ = operator.int(0x617224, "+", g_libGTASA)
    ARM.memprotect2(0x1A24F8, 0@, 4)
    ARM.memprotect2(0x1A24FC, glDrawElements, 4)
    
    // RenderArray
    call.2r( @longPatch, 0x1A2680, @rnoiproc)
    ARM.memprotect2(0x1A26EC, glDrawArrays, 4)
    
    //Uniform Tweak
    call.2r( @longPatch, 0x1A2C84, @utw)
    ARM.memprotect2(0x1A2E50, renderQueue_ptr, 4)
    0@ = operator.int(0x61727C, "+", g_libGTASA)
    ARM.memprotect2(0x1A2E58, 0@, 4)
                                 
    // RQDrawIndexed             
    call.2r( @longPatch, 0x1A9614, @dix)
    ARM.memprotect2(0x1A9650, renderQueue_ptr, 4)
    
    // RQDrawNonIndexed
    call.2r( @longPatch, 0x1A9710, @dnix)
    ARM.memprotect2(0x1A974C, renderQueue_ptr, 4)
    
    //RQVertexBuffer::Set
    call.2r( @longPatch, 0x1A8C18, @rvs)
    0@ = operator.int(0x61B38C, "+", g_libGTASA)
    ARM.memprotect2(0x1A8C54, 0@, 4)
    0@ = operator.int(0x5D2470, "+", g_libGTASA)
    ARM.memprotect2(0x1A8C58, 0@, 4)
    ARM.memprotect2(0x1A8C5C, renderQueue_ptr, 4)
    
    //RQIndexBuffer::Set
    call.2r( @longPatch, 0x1A9018, @ris)
    0@ = operator.int(0x61B388, "+", g_libGTASA)
    ARM.memprotect2(0x1A9050, 0@, 4)
    ARM.memprotect2(0x1A9054, renderQueue_ptr, 4)
    
    //RQSetDescription
    call.2r( @longPatch, 0x1A940C, @sdn)
    0@ = operator.int(0x61B2FC, "+", g_libGTASA)
    ARM.memprotect2(0x1A9470, 0@, 4)
    0@ = operator.int(0x5D2470, "+", g_libGTASA)
    ARM.memprotect2(0x1A9474, 0@, 4)
    ARM.memprotect2(0x1A9478, renderQueue_ptr, 4)
    
    //RQ_Command_rqSelectTexture
    call.2r( @longPatch, 0x1A6968, @rqst)
    0@ = operator.int(0x5D02D4, "+", g_libGTASA)
    1301: LDR 0@ 0@
    ARM.memprotect2(0x1A697C, 0@, 4)
   else
    if gameVersion == 200
    then                         
        // Matrix Uniform tweak 
        ARM.memprotect2(0x1CD1D8, 0xF968F0AC, 4)
        
        // RenderIndex
        call.2r( @longPatch, 0x1CBEBC, @riproc200)
        0@ = operator.int(0x6B8B00, "+", g_libGTASA)
        ARM.memprotect2(0x1CBF40, 0@, 4)
        ARM.memprotect2(0x1CBF44, glDrawElements, 4)
        
        // RenderArray
        call.2r( @longPatch, 0x1CC0E8, @rnoiproc200) //!
        ARM.memprotect2(0x1CC154, glDrawArrays, 4)
        0@ = operator.int(0x1CC15D, "+", g_libGTASA)
        ARM.memprotect2(0x660880, 0@, 4)
        
        //Uniform Tweak
        call.2r( @longPatch, 0x1CD368, @utw200)
        ARM.memprotect2(0x1CD534, renderQueue_ptr, 4)
        0@ = operator.int(0x6B8BB8, "+", g_libGTASA)
        ARM.memprotect2(0x1CD53C, 0@, 4)
        
        // RQDrawIndexed             
        call.2r( @longPatch, 0x1D3390, @dix200)
        ARM.memprotect2(0x1D33CC, renderQueue_ptr, 4)
        
        // RQDrawNonIndexed
        call.2r( @longPatch, 0x1D3470, @dnix200)
        ARM.memprotect2(0x1D34AC, renderQueue_ptr, 4)
        
        //RQ_Command_rqSelectTexture
        call.2r( @longPatch, 0x1D03A4, @rqst)
        0@ = operator.int(0x67847C, "+", g_libGTASA)
        ARM._(LDR 0@, 0@)
        ARM.memprotect2(0x1D03B8, 0@, 4)        

        /*
        //RQVertexBuffer::Set
        call.2r( @longPatch, 0x1D270C, @rvs200)
        0@ = operator.int(0x6BCC58, "+", g_libGTASA)
        ARM.memprotect2(0x1D2748, 0@, 4)
        0@ = operator.int(0x67A3D4, "+", g_libGTASA)
        ARM.memprotect2(0x1D274C, 0@, 4)
        ARM.memprotect2(0x1D2750, renderQueue_ptr, 4)
        
        //RQIndexBuffer::Set
        call.2r( @longPatch, 0x1D2D90, @ris200)
        0@ = operator.int(0x6BCC60, "+", g_libGTASA)
        ARM.memprotect2(0x1D2DC8, 0@, 4)
        ARM.memprotect2(0x1D2DCC, renderQueue_ptr, 4)
        */
       else
        if gameVersion == 210
        then                         
            // Matrix Uniform tweak 
            ARM.memprotect2(0x1CD158, 0xF980F0AC, 4)
            
            // RenderIndex
            call.2r( @longPatch, 0x1CBE3C, @riproc200)
            0@ = operator.int(0x6B8B00, "+", g_libGTASA)
            ARM.memprotect2(0x1CBEC0, 0@, 4)
            ARM.memprotect2(0x1CBEC4, glDrawElements, 4)
            
            // RenderArray
            call.2r( @longPatch, 0x1CC068, @rnoiproc200) //!
            ARM.memprotect2(0x1CC0D4, glDrawArrays, 4)
            0@ = operator.int(0x1CC0DD, "+", g_libGTASA)
            ARM.memprotect2(0x660870, 0@, 4)
            return
            
            //Uniform Tweak
            call.2r( @longPatch, 0x1CD368, @utw200)
            ARM.memprotect2(0x1CD534, renderQueue_ptr, 4)
            0@ = operator.int(0x6B8BB8, "+", g_libGTASA)
            ARM.memprotect2(0x1CD53C, 0@, 4)
            
            // RQDrawIndexed             
            call.2r( @longPatch, 0x1D3390, @dix200)
            ARM.memprotect2(0x1D33CC, renderQueue_ptr, 4)
            
            // RQDrawNonIndexed
            call.2r( @longPatch, 0x1D3470, @dnix200)
            ARM.memprotect2(0x1D34AC, renderQueue_ptr, 4)
            
            //RQ_Command_rqSelectTexture
            call.2r( @longPatch, 0x1D03A4, @rqst)
            0@ = operator.int(0x67847C, "+", g_libGTASA)
            ARM._(LDR 0@, 0@)
            ARM.memprotect2(0x1D03B8, 0@, 4)        
    
            /*
            //RQVertexBuffer::Set
            call.2r( @longPatch, 0x1D270C, @rvs200)
            0@ = operator.int(0x6BCC58, "+", g_libGTASA)
            ARM.memprotect2(0x1D2748, 0@, 4)
            0@ = operator.int(0x67A3D4, "+", g_libGTASA)
            ARM.memprotect2(0x1D274C, 0@, 4)
            ARM.memprotect2(0x1D2750, renderQueue_ptr, 4)
            
            //RQIndexBuffer::Set
            call.2r( @longPatch, 0x1D2D90, @ris200)
            0@ = operator.int(0x6BCC60, "+", g_libGTASA)
            ARM.memprotect2(0x1D2DC8, 0@, 4)
            ARM.memprotect2(0x1D2DCC, renderQueue_ptr, 4)
            */
        end 
    end 
end
return

:CNormal
// object data load
isDoxCurBuff = DOXVARPOINTER
call.0r( @script_CreateThread )
008A: CTheScriptsOnFunc = RET

call.1r( @GetScript, @FGL_NORMALLOAD)
0085: 41@ = RET

if gameVersion == 108
then    
    call.2r( @longPatch, 0x19489C, @CMDNORMAL)
    ARM.memprotect2(0x1948CC, CTheScriptsOnFunc, 4)    
    call.2r( @script_onFunction, CTheScriptsOnFunc, 41@)
                   
    // vertex normal generated
    call.0r( @script_CreateThread )
    008A: CTheScriptsOnFunc = RET
    
    call.1r( @GetScript, @FGL_NORMAL)    
    0085: 41@ = RET
        
    call.2r( @longPatch, 0x1948D0, @CMDNORMAL)
    ARM.memprotect2(0x194900, CTheScriptsOnFunc, 4)    
    call.2r( @script_onFunction, CTheScriptsOnFunc, 41@)
                                  
    call.2r( @longPatch, 0x1C4924, @rndr)                
    ARM.memprotect2(0x1ED52E, 0x4620, 2)                
    ARM.memprotect2(0x1ED530, 0x4641, 2)                
    ARM.memprotect2(0x1ED532, 0x68AB, 2)                
    ARM.memprotect2(0x1ED534, 0x464A, 2)                
    ARM.memprotect2(0x1ED536, 0xF9F5F7D7, 4)
    ARM.memprotect2(0x1ED53A, NOP, 2)                
                                            
    ARM.memprotect2(0x1ED588, 0x464A, 2)
    ARM.memprotect2(0x1ED58A, 0xF9CBF7D7, 4)    
    ARM.memprotect2(0x1ED58E, NOP, 2)    
    
    // normal maker
    call.2r( @longPatch, 0x1DE610, @normalgeneratedOri)
    call.2r( @longPatch, 0x1DE714, @normalgeneratedMod)
                           
    // normal init                       
    call.2r( @longPatch, 0x1DE7AC, @normalinit)
    ARM.memprotect2(0x1DE7D6, 0x4B09, 2)
    ARM.memprotect2(0x1DE7D8, 0x4798, 2)
    ARM.memprotect2(0x1DE7FC, memcpy, 4)
   else
    if gameVersion == 200
    then
        call.2r( @longPatch, 0x1BCCA0, @CMDNORMAL)
        ARM.memprotect2(0x1BCCD0, CTheScriptsOnFunc, 4)    
        call.2r( @script_onFunction, CTheScriptsOnFunc, 41@)
                       
        // vertex normal generated
        call.0r( @script_CreateThread )
        008A: CTheScriptsOnFunc = RET
        
        call.1r( @GetScript, @FGL_NORMAL)    
        0085: 41@ = RET
            
        call.2r( @longPatch, 0x1BCCD4, @CMDNORMAL)
        ARM.memprotect2(0x1BCD04, CTheScriptsOnFunc, 4)    
        call.2r( @script_onFunction, CTheScriptsOnFunc, 41@)
                                      
        call.2r( @longPatch, 0x1F45AC, @rndr200)
        ARM.memprotect2(0x221046, 0x1C2A, 2)
        ARM.memprotect2(0x221050, 0xFAACF7D3, 4)
                                                
        ARM.memprotect2(0x221032, 0x1C2A, 2)
        ARM.memprotect2(0x22103C, 0xFAB6F7D3, 4)
        
        // normal maker
        call.2r( @longPatch, 0x2116F4, @normalgeneratedOri200)
        call.2r( @longPatch, 0x21181C, @normalgeneratedMod200)
                               
        // normal init                       
        call.2r( @longPatch, 0x2118B4, @normalinit)
        ARM.memprotect2(0x2118DE, 0x4B09, 2)
        ARM.memprotect2(0x2118E0, 0x4798, 2)
        ARM.memprotect2(0x211904, memcpy, 4)
       else
        if gameVersion == 210
        then
            call.2r( @longPatch, 0x1BCC20, @CMDNORMAL)
            ARM.memprotect2(0x1BCC50, CTheScriptsOnFunc, 4)    
            call.2r( @script_onFunction, CTheScriptsOnFunc, 41@)
                           
            // vertex normal generated
            call.0r( @script_CreateThread )
            008A: CTheScriptsOnFunc = RET
            
            call.1r( @GetScript, @FGL_NORMAL)    
            0085: 41@ = RET
                
            call.2r( @longPatch, 0x1BCC54, @CMDNORMAL)
            ARM.memprotect2(0x1BCC84, CTheScriptsOnFunc, 4)    
            call.2r( @script_onFunction, CTheScriptsOnFunc, 41@)
                                          
            call.2r( @longPatch, 0x1F452C, @rndr200)
            
            ARM.memprotect2(0x220FC6, 0x1C2A, 2)
            ARM.memprotect2(0x220FD0, 0xFAACF7D3, 4)
                                                    
            ARM.memprotect2(0x220FB2, 0x1C2A, 2)
            ARM.memprotect2(0x220FBC, 0xFAB6F7D3, 4)
            
            // normal maker
            call.2r( @longPatch, 0x211674, @normalgeneratedOri210)
            call.2r( @longPatch, 0x21179C, @normalgeneratedMod210)
                                   
            // normal init                       
            call.2r( @longPatch, 0x211834, @normalinit)
            ARM.memprotect2(0x21185E, 0x4B09, 2)
            ARM.memprotect2(0x211860, 0x4798, 2)
            ARM.memprotect2(0x211884, memcpy, 4)
        end 
    end 
end
return

:PatchGLCALL
if gameVersion == 108
then
    matrixUniform = operator.int(0x1A2C11, "+", g_libGTASA)
    floatUniform = operator.int(0x1A30C1, "+", g_libGTASA)
    curSelectedShader = operator.int(0x612850, "+", g_libGTASA)
    projectionMatrix = operator.int(0x1914C5, "+", g_libGTASA)
    viewMatrix = operator.int(0x1914A1, "+", g_libGTASA)
    modelMatrix = operator.int(0x19147D, "+", g_libGTASA)
    textureMatrix = operator.int(0x1914E9, "+", g_libGTASA)
    skin_dirty = operator.int(0x613F20, "+", g_libGTASA)
    skin_num = operator.int(0x613F24, "+", g_libGTASA)
    setBonesConstant = operator.int(0x1A3211, "+", g_libGTASA)
    skin_map = operator.int(0x613F28, "+", g_libGTASA)
    MaterialDirty = operator.int(0x611A04, "+", g_libGTASA)
    MaterialEmissive = operator.int(0x611A0C, "+", g_libGTASA)
    MaterialAmbient = operator.int(0x611A3C, "+", g_libGTASA)
    MaterialDiffuse = operator.int(0x611A2C, "+", g_libGTASA)
    DirectionalLightColourFromDay = operator.int(0x9E2504, "+", g_libGTASA)
    emu_cameraPosition = operator.int(0x612808, "+", g_libGTASA)
    emu_fogdistances = operator.int(0x5D2218, "+", g_libGTASA)
    emu_fogcolor = operator.int(0x5D2208, "+", g_libGTASA)
    curAlphaModulate = operator.int(0x5D21D0, "+", g_libGTASA)
    colorInterp = operator.int(0x6118E0, "+", g_libGTASA)
    envMapCoefficient = operator.int(0x5D2228, "+", g_libGTASA)
    curShaderStateFlags = operator.int(0x61572C, "+", g_libGTASA)
    
    // for update uniform
    call.2r( @longPatch, 0x23EB88, @matgl)
    call.2r( @longPatch, 0x23EBAC, @vecgl)
    
    //bones
    call.2r( @longPatch, 0x23EBC4, @bonegl)
    ARM.memprotect2(0x23EBE0, skin_dirty, 4)
    ARM.memprotect2(0x23EBE4, skin_num, 4)
    ARM.memprotect2(0x23EBE8, skin_map, 4)
   else
    if gameVersion == 200 
    then
        matrixUniform = operator.int(0x1CD1C1, "+", g_libGTASA)
        floatUniform = operator.int(0x1CD05D, "+", g_libGTASA)
        curSelectedShader = operator.int(0x6B4580, "+", g_libGTASA)
        projectionMatrix = operator.int(0x1BA6F9, "+", g_libGTASA)
        viewMatrix = operator.int(0x1BA6E1, "+", g_libGTASA)
        modelMatrix = operator.int(0x1BA6C9, "+", g_libGTASA)
        textureMatrix = operator.int(0x1BA711, "+", g_libGTASA)
        skin_dirty = operator.int(0x6B7090, "+", g_libGTASA)
        skin_num = operator.int(0x6B708C, "+", g_libGTASA)
        setBonesConstant = operator.int(0x1CD225, "+", g_libGTASA)
        skin_map = operator.int(0x6B588C, "+", g_libGTASA)
        MaterialDirty = operator.int(0x6B37BC, "+", g_libGTASA)
        MaterialEmissive = operator.int(0x6B37A8, "+", g_libGTASA)
        MaterialAmbient = operator.int(0x6B3778, "+", g_libGTASA)
        MaterialDiffuse = operator.int(0x6B3788, "+", g_libGTASA)
        DirectionalLightColourFromDay = operator.int(0xA83D14, "+", g_libGTASA)
        emu_cameraPosition = operator.int(0x6B4168, "+", g_libGTASA)
        emu_fogdistances = operator.int(0x67A184, "+", g_libGTASA)
        emu_fogcolor = operator.int(0x67A190, "+", g_libGTASA)
        curAlphaModulate = operator.int(0x67A10C, "+", g_libGTASA)
        colorInterp = operator.int(0x6B32A0, "+", g_libGTASA)
        envMapCoefficient = operator.int(0x67A17C, "+", g_libGTASA)
        curShaderStateFlags = operator.int(0x6B7094, "+", g_libGTASA)
        
        // for update uniform        
        call.2r( @longPatch, 0x277454, @matgl200)
        call.2r( @longPatch, 0x277478, @vecgl200)
        
        //bones
        call.2r( @longPatch, 0x277490, @bonegl200)
        ARM.memprotect2(0x2774AC, skin_dirty, 4)
        ARM.memprotect2(0x2774B0, skin_num, 4)
        ARM.memprotect2(0x2774B4, skin_map, 4)
       else
        if gameVersion == 210 
        then
            matrixUniform = operator.int(0x1CD141, "+", g_libGTASA)
            floatUniform = operator.int(0x1CCFDD, "+", g_libGTASA)
            curSelectedShader = operator.int(0x6B4580, "+", g_libGTASA)
            projectionMatrix = operator.int(0x1BA679, "+", g_libGTASA)
            viewMatrix = operator.int(0x1BA661, "+", g_libGTASA)
            modelMatrix = operator.int(0x1BA649, "+", g_libGTASA)
            textureMatrix = operator.int(0x1BA691, "+", g_libGTASA)
            skin_dirty = operator.int(0x6B7090, "+", g_libGTASA)
            skin_num = operator.int(0x6B708C, "+", g_libGTASA)
            setBonesConstant = operator.int(0x1CD1A5, "+", g_libGTASA)
            skin_map = operator.int(0x6B588C, "+", g_libGTASA)
            MaterialDirty = operator.int(0x6B37BC, "+", g_libGTASA)
            MaterialEmissive = operator.int(0x6B37A8, "+", g_libGTASA)
            MaterialAmbient = operator.int(0x6B3778, "+", g_libGTASA)
            MaterialDiffuse = operator.int(0x6B3788, "+", g_libGTASA)
            DirectionalLightColourFromDay = operator.int(0xA83D14, "+", g_libGTASA)
            emu_cameraPosition = operator.int(0x6B4168, "+", g_libGTASA)
            emu_fogdistances = operator.int(0x67A184, "+", g_libGTASA)
            emu_fogcolor = operator.int(0x67A190, "+", g_libGTASA)
            curAlphaModulate = operator.int(0x67A10C, "+", g_libGTASA)
            colorInterp = operator.int(0x6B32A0, "+", g_libGTASA)
            envMapCoefficient = operator.int(0x67A17C, "+", g_libGTASA)
            curShaderStateFlags = operator.int(0x6B7094, "+", g_libGTASA)
            
            // for update uniform        
            call.2r( @longPatch, 0x27740C, @matgl210)
            call.2r( @longPatch, 0x277430, @vecgl210)
            
            //bones
            call.2r( @longPatch, 0x277448, @bonegl210)
            ARM.memprotect2(0x277464, skin_dirty, 4)
            ARM.memprotect2(0x277468, skin_num, 4)
            ARM.memprotect2(0x27746C, skin_map, 4)
        end 
    end
end
return

:initEGL
2@ = script.getOffset(@glFunction);
20@ = 0
while true
    1301: LDR getv 2@
    if getv == 0x4C4F45
    then
        break
    end                                      
    fastCall.1r(eglGetProcAddress, 2@); //eglGetProcAddress
    0085: $14000(20@,1i) = RET
    
    //strlen
    fastCall.1r(strlen, 2@)
    005C: 2@ += RET
    2@++
    20@++
end
return

:rqFlush
fastCall.1r($15167, renderQueue)
return

:clearMemory
fastCall.1r( free, CFileConfig)
fastCall.1r( free, CConfig_Advanced)
return      
    
:logsetcurrent
0@ = script.getOffset(0@)
fastCall.2r(strcat, CharPhoneInfoLog, 0@)
ARM._(LDR 12@, $2276)
ARM._(STR 1, $2276)
40@ = Script.getOffset(@logOutput)
41@ = Script.getOffset(@ModeW)
fastCall.2r($15015, 40@, 41@)
008B: 41@ = RET
if 41@ <> 0
then
    fastCall.1r(strlen, CharPhoneInfoLog)
    0085: 15@ = RET
    fastCall.3r($15243, 41@, CharPhoneInfoLog, 15@)
    fastCall.1r($15242, 41@)
end
ARM._(STR 12@, $2276)
return

:logsetcurrent2
fastCall.2r(strcat, CharPhoneInfoLog, 0@)

fastCall.0r($15014)
40@ = Script.getOffset(@logOutput)
41@ = Script.getOffset(@ModeW)
fastCall.2r($15015, 40@, 41@)
008B: 41@ = RET
if 41@ <> 0
then
    fastCall.1r(strlen, CharPhoneInfoLog)
    fastCall.3r($15243, 41@, CharPhoneInfoLog, RET)
    fastCall.1r($15242, 41@)
end
return
    
:Script_SetLocalVariableValue
1@ *= 4
1@ += 0x3C
005A: 0@ += 1@
ARM._(STR 2@, 0@)
return

:script_CreateThread
call.1r( @malloc, 1024)
0085: 41@ = RET
1@ = operator.int(41@, "+", 0x0C)
ARM._(STR CTheScriptsHead, 1@)
0085: RET = 41@
return

:script_onFunction
2@ = operator.int(0@, "+", 16)
ARM._(STR 1@, 2@)
return    
  
:menu
call.0r( @Menu_initialise)

// Thread Initialise
call.0r( @createMenuThread )
008A: menu_settings = RET

// Set Thread
call.1r( @setMenuThread, menu_settings )

// Make Main Layer 
// target, id, x pos, y pos, scale x, scale y, r, g, b, a
call.1r( @menu_SetTexture, FALSE)
call.10r( @InsertBackground, FALSE, 0, 200.0, 300.0, 170.0, 250.0, 20, 20, 20, 100 )
008A:  menu_Background1 = RET // get return value                                

// Make Text
// target, id, text, x pos, y pos, scale, r, g, b, a
call.1r( @menu_SetFontStyle, 1)
call.1r( @menu_SetFontEdge, 0)
call.1r( @menu_SetFontProportional, 1)
call.1r( @menu_SetFontWrapx, 1.0)
call.1r( @menu_SetFontJustify, 0)
call.1r( @menu_SetFontOrientation, 1)
call.1r( @menu_SetFontStatic, 0)

menu_height_list_value = 70.0


// GodRay -->
0@ = script.getOffset( @GodRay )                                            
call.10r( @InsertText, menu_Background1, 0, 0@, 10.0, menu_height_list_value, 2.0, 255, 255, 255, 255 )
008B: menu_CurFontFirst = RET

    call.1r( @menu_SetTexture, FALSE)
    call.10r( @InsertBackground, menu_Background1, 3, 300.0, 350.0, 220.0, 300.0, 20, 20, 20, 100 )
    008B: menu_settingGodRay = RET
    
    call.1r( @menu_SetFontStatic, 1)
    call.1r( @menu_SetFontOrientation, 0)
    
    1@ = script.getOffset( @GodRay )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 100.0, 20.0, 3.0, 255, 255, 255, 255 )
                                   
    call.1r( @menu_SetFontOrientation, 1)
    
    // Enable
    0@ = var.pointer(menu_godRay_isGodRayEnable)
    call.1r( @menu_SetCheckButtonPointer, 0@)
    
    call.2r( @menu_ButtonSetTexture, $12012, $12013)
    
    1@ = script.getOffset( @Enable )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 10.0, 100.0, 2.0, 255, 255, 255, 255 )
    call.10r( @InsertCheckBox, RET, 0, 170.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // checkBox
    
    
    // Exposure
    1@ = script.getOffset( @exposure )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 10.0, 180.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_godRay_exposure)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 2, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 3, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    
    // Decay
    1@ = script.getOffset( @decay )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 10.0, 230.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_godRay_decay)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 4, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 5, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    
    // Density
    1@ = script.getOffset( @density )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 10.0, 280.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_godRay_density)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 6, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 7, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    
    // Weight
    1@ = script.getOffset( @weight )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 10.0, 330.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_godRay_weight)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 8, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 9, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    
    // Samples
    1@ = script.getOffset( @samples )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 10.0, 380.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_godRay_samples)
    call.10r( @InsertInt, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 10, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 11, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    // alpha
    1@ = script.getOffset( @gradien )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 10.0, 430.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_godRay_gradien)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 16, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 17, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    // pixel
    1@ = script.getOffset( @pixel )
    call.10r( @InsertText, menu_settingGodRay, -1, 1@, 10.0, 480.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_godRay_pixel)
    call.10r( @InsertInt, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 18, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 19, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
// god ray }

menu_height_list_value += MENU_ADD_LIST_HEIGHT




// Depth Of Field
call.1r( @menu_SetFontStyle, 1)
call.1r( @menu_SetFontEdge, 0)
call.1r( @menu_SetFontProportional, 1)
call.1r( @menu_SetFontWrapx, 1.0)
call.1r( @menu_SetFontJustify, 0)
call.1r( @menu_SetFontOrientation, 1)
call.1r( @menu_SetFontStatic, 0)

0@ = script.getOffset( @DOF )
call.10r( @InsertText, menu_Background1, 1, 0@, 10.0, menu_height_list_value, 2.0, 255, 255, 255, 255 )
    
    call.1r( @menu_SetTexture, FALSE)
    call.10r( @InsertBackground, menu_Background1, 4, 300.0, 300.0, 200.0, 250.0, 20, 20, 20, 100 )
    008B: menu_settingDOF = RET
    
    call.1r( @menu_SetFontStatic, 1)
    
    1@ = script.getOffset( @DOF )
    call.10r( @InsertText, menu_settingDOF, -1, 1@, 100.0, 20.0, 3.0, 255, 255, 255, 255 )
    
    call.1r( @menu_SetFontOrientation, 1)
                                   
    // Enable                   
    0@ = var.pointer(menu_DOF_isDOFEnable)
    call.1r( @menu_SetCheckButtonPointer, 0@)
    
    call.2r( @menu_ButtonSetTexture, $12012, $12013)
    
    1@ = script.getOffset( @Enable )
    call.10r( @InsertText, menu_settingDOF, -1, 1@, 10.0, 100.0, 2.0, 255, 255, 255, 255 )
    call.10r( @InsertCheckBox, RET, 1, 170.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // checkBox
    
    
    // nearclip
    1@ = script.getOffset( @Near )
    call.10r( @InsertText, menu_settingDOF, -1, 1@, 10.0, 180.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_DOF_nearclip)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 12, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 13, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    
    // farclip
    1@ = script.getOffset( @Far )
    call.10r( @InsertText, menu_settingDOF, -1, 1@, 10.0, 230.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_DOF_farclip)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 14, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 15, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
///

menu_height_list_value += MENU_ADD_LIST_HEIGHT


// Bloom ->
call.1r( @menu_SetFontStyle, 1)
call.1r( @menu_SetFontEdge, 0)
call.1r( @menu_SetFontProportional, 1)
call.1r( @menu_SetFontWrapx, 1.0)
call.1r( @menu_SetFontJustify, 0)
call.1r( @menu_SetFontOrientation, 1)
call.1r( @menu_SetFontStatic, 0)
0@ = script.getOffset( @Bloom )
call.10r( @InsertText, menu_Background1, 2, 0@, 10.0, menu_height_list_value, 2.0, 255, 255, 255, 255 )

    call.1r( @menu_SetTexture, FALSE)
    call.10r( @InsertBackground, menu_Background1, 5, 300.0, 300.0, 200.0, 250.0, 20, 20, 20, 100 )
    008B: menu_settingBloom = RET
    
    call.1r( @menu_SetFontStatic, 1)
    
    1@ = script.getOffset( @Bloom )
    call.10r( @InsertText, menu_settingBloom, -1, 1@, 100.0, 20.0, 3.0, 255, 255, 255, 255 )
    
    call.1r( @menu_SetFontOrientation, 1)
                                   
    // Enable
    0@ = var.pointer(menu_bloom_isEnable)
    call.1r( @menu_SetCheckButtonPointer, 0@)
    
    call.2r( @menu_ButtonSetTexture, $12012, $12013)
    
    1@ = script.getOffset( @Enable )
    call.10r( @InsertText, menu_settingBloom, -1, 1@, 10.0, 100.0, 2.0, 255, 255, 255, 255 )
    call.10r( @InsertCheckBox, RET, 2, 170.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // checkBox
    
    // fSelection
    1@ = script.getOffset( @selection )
    call.10r( @InsertText, menu_settingBloom, -1, 1@, 10.0, 180.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_bloom_Selection)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 20, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 21, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    
    
    
    // sample
    1@ = script.getOffset( @samples )
    call.10r( @InsertText, menu_settingBloom, -1, 1@, 10.0, 230.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_bloom_sample)
    call.10r( @InsertInt, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 22, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 23, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    // intensity
    1@ = script.getOffset( @intensity )
    call.10r( @InsertText, menu_settingBloom, -1, 1@, 10.0, 280.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_bloom_intensity)
    call.10r( @InsertFloat, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 24, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 25, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
    
    // pixel
    1@ = script.getOffset( @pixel )
    call.10r( @InsertText, menu_settingBloom, -1, 1@, 10.0, 330.0, 2.0, 255, 255, 255, 255 )
    1@ = var.pointer(menu_bloom_pixel)
    call.10r( @InsertInt, RET, -1, 1@, 110.0, 0.0, 2.0, 255, 255, 255, 255 )
    0085: $11700 = RET
    call.2r( @menu_ButtonSetTexture, $12016, $12017) // decrease
    call.10r( @InsertButton, $11700, 26, -25.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // Dec
    call.2r( @menu_ButtonSetTexture, $12014, $12015) // increase
    call.10r( @InsertButton, $11700, 27, 75.0, 25.0, 20.0, 20.0, 255, 255, 255, 255 ) // inc
call.1r( @menu_SetFontStatic, 0)

menu_height_list_value += MENU_ADD_LIST_HEIGHT

// Bloom ->
call.1r( @menu_SetFontStyle, 1)
call.1r( @menu_SetFontEdge, 0)
call.1r( @menu_SetFontProportional, 1)
call.1r( @menu_SetFontWrapx, 1.0)
call.1r( @menu_SetFontJustify, 0)
call.1r( @menu_SetFontOrientation, 1)
call.1r( @menu_SetFontStatic, 0)
0@ = script.getOffset( @ReloadShader )
call.10r( @InsertText, menu_Background1, 3, 0@, 10.0, menu_height_list_value, 2.0, 255, 255, 255, 255 )
call.10r( @InsertCheckBox, menu_Background1, 1, 10.0, menu_height_list_value, 20.0, 20.0, 255, 255, 255, 255 ) // checkBox
    


menu_height_list_value += MENU_ADD_LIST_HEIGHT
   

// On TOP
call.2r( @menu_ButtonSetTexture, $12010, $12011)
call.10r( @InsertBackground, menu_Background1, 1, 85.0, 20.0, 170.0, 20.0, 0, 70, 120, 255 )
call.10r( @InsertButton, RET, 0, 140.0, 20.0, 15.0, 15.0, 255, 255, 255, 255 ) // close button

// On Botton
call.2r( @menu_ButtonSetTexture, $12008, $12009)
//call.10r( @InsertBackground, menu_Background1, 2, 85.0, 495.0, 170.0, 30.0, 0, 70, 120, 255 )
//call.10r( @InsertButton, RET, 1, 85.0, 30.0, 20.0, 20.0, 255, 255, 255, 255 ) // apply button


// thread 2
call.0r( @createMenuThread )
008A: menu_settings2 = RET

// Set Thread
call.1r( @setMenuThread, menu_settings2 )

call.2r( @menu_ButtonSetTexture, $537, $538)
call.10r( @InsertButton, 0, 0, 40.0, 40.0, 30.0, 30.0, 255, 255, 255, 255 ) // set

// After Initialise
call.1r( @menu_StatDisable, menu_settingGodRay)
call.1r( @menu_StatDisable, menu_settingDOF)
call.1r( @menu_StatDisable, menu_settingBloom)
return     

:menu_StatDisable
0@ -= 4
ARM._(STR 0, 0@)
return

:menu_SetCheckButtonPointer
008A: menu_CurCheckButtonPointer = 0@
return

:menu_SetFontStatic
008A: menu_CurFontStatic = 0@
return

:menu_touchArea           
call.1r( @malloc, 512)
008A: menu_TouchArea = RET
return

:menu_initialise
call.1r( @malloc, 512)
008A: menu_Queue = 0@
return

:menu_ButtonSetTexture
008A: menu_CurButtonTex1 = 0@
008A: menu_CurButtonTex2 = 1@
return


:menu_SetFontStyle
008A: menu_CurFontStyle = 0@
return

:menu_SetFontEdge
008A: menu_CurFontEdge = 0@
return

:menu_SetFontProportional
008A: menu_CurFontProportional = 0@
return

:menu_SetFontWrapx
008A: menu_CurFontWrapx = 0@
return

:menu_SetFontJustify
008A: menu_CurFontJustify = 0@
return

:menu_SetFontOrientation
008A: menu_CurFontOrientation = 0@
return


:setMenuThread
008A: menu_CurThread = 0@
return

:createMenuThread
// Pointer
0@ = 36
malloc()
0085: 1@ = 0@

1@ += 4

// Num
0@ = 4
malloc()
2@ = operator.int(1@, "+", 0)
ARM._(STR 0@, 2@)

// Buffer
0@ = 2048
malloc()
2@ = operator.int(1@, "+", 4)
ARM._(STR 0@, 2@)

// Background
0@ = 1024
malloc()
2@ = operator.int(1@, "+", 8)
ARM._(STR 0@, 2@)

// Text
0@ = 1024
malloc()
2@ = operator.int(1@, "+", 12)
ARM._(STR 0@, 2@)

// Button
0@ = 1024
malloc()
2@ = operator.int(1@, "+", 16)
ARM._(STR 0@, 2@)

// Check box
0@ = 1024
malloc()
2@ = operator.int(1@, "+", 20)
ARM._(STR 0@, 2@)

// int Text
0@ = 1024
malloc()
2@ = operator.int(1@, "+", 24)
ARM._(STR 0@, 2@)

// float Text
0@ = 1024
malloc()
2@ = operator.int(1@, "+", 28)
ARM._(STR 0@, 2@)

0085: RET = 1@
0085: 10@ = menu_Queue
while true
    1301: LDR 11@ 10@
    if 11@ == 0
    then
        ARM._(STR RET, 10@)
        break
    end
    10@ += 0x04    
end
return

:menu_SetTexture
008A: menu_CurTex = 0@
return

:InsertText
// set text space
008B: R32 = 0@

008B: R30 = 2@
repeat
    1301: LDRB R31 R30
    if R31 == 0x20
    then
        ARM._(STRB 0x01, R30)
    end
    R30++
until R31 == 0x00


menu_CurMenuInsert = Text_Type

0085: 20@ = 0@
0085: 21@ = 1@

call.1r( @malloc, 32)
RET += 4
ARM._(STRB TRUE, RET) // status -
RET++
ARM._(STRB TRUE, RET) // status Render
RET++
ARM._(STRB TRUE, RET) // status 2 // from attached
RET++
ARM._(STRB TRUE, RET) // status 1
RET++
0085: 40@ = RET

// Buffer Identity
0085: 41@ = 40@
ARM._(STR 20@, 41@)
41@ += 4
ARM._(STR Text_Type, 41@)
41@ += 4
call.1r( @malloc, 128)
ARM._(STR RET, 41@)

// Original Pos Save
41@ += 0x04
ARM._(STR, 3@, 41@)
41@ += 0x04
ARM._(STR, 4@, 41@)

// Insert Values
0085: 41@ = RET
ARM._(STR 2@, 41@) // text
41@ += 0x04
ARM._(STR 3@, 41@) // X
41@ += 0x04
ARM._(STR 4@, 41@) // Y
41@ += 0x04
ARM._(STR 5@, 41@) // scale
41@ += 0x04
ARM._(STR 6@, 41@) // R
41@ += 0x04
ARM._(STR 7@, 41@) // G
41@ += 0x04
ARM._(STR 8@, 41@) // B
41@ += 0x04
ARM._(STR 9@, 41@) // A
41@ += 0x04
ARM._(STR menu_CurFontStyle, 41@)
41@ += 0x04
ARM._(STR menu_CurFontEdge, 41@)
41@ += 0x04
ARM._(STR menu_CurFontProportional, 41@)
41@ += 0x04
ARM._(STR menu_CurFontWrapx, 41@)
41@ += 0x04
ARM._(STR menu_CurFontJustify, 41@)
41@ += 0x04
ARM._(STR menu_CurFontOrientation, 41@)
41@ += 0x04
ARM._(STR menu_CurFontStatic, 41@)


// ADD TO BUFFER
call.1r( @menu_AddToBuffer, 40@, 21@)

0085: RET = 40@
if 003B: R32 == menu_Background1
then
    008B: menu_CurFontLast = RET
end
return

:InsertInt
menu_CurMenuInsert = Int_Type

0085: 20@ = 0@
0085: 21@ = 1@

call.1r( @malloc, 32)
RET += 4
ARM._(STRB TRUE, RET) // status -
RET++
ARM._(STRB TRUE, RET) // status Render
RET++
ARM._(STRB TRUE, RET) // status 2 // from attached
RET++
ARM._(STRB TRUE, RET) // status 1
RET++
0085: 40@ = RET

// Buffer Identity
0085: 41@ = 40@
ARM._(STR 20@, 41@)
41@ += 4
ARM._(STR Int_Type, 41@)
41@ += 4
call.1r( @malloc, 128)
ARM._(STR RET, 41@)

// Original Pos Save
41@ += 0x04
ARM._(STR, 3@, 41@)
41@ += 0x04
ARM._(STR, 4@, 41@)

// Insert Values
0085: 41@ = RET
ARM._(STR 2@, 41@) // text
41@ += 0x04
ARM._(STR 3@, 41@) // X
41@ += 0x04
ARM._(STR 4@, 41@) // Y
41@ += 0x04
ARM._(STR 5@, 41@) // scale
41@ += 0x04
ARM._(STR 6@, 41@) // R
41@ += 0x04
ARM._(STR 7@, 41@) // G
41@ += 0x04
ARM._(STR 8@, 41@) // B
41@ += 0x04
ARM._(STR 9@, 41@) // A
41@ += 0x04
ARM._(STR menu_CurFontStyle, 41@)
41@ += 0x04
ARM._(STR menu_CurFontEdge, 41@)
41@ += 0x04
ARM._(STR menu_CurFontProportional, 41@)
41@ += 0x04
ARM._(STR menu_CurFontWrapx, 41@)
41@ += 0x04
ARM._(STR menu_CurFontJustify, 41@)
41@ += 0x04
ARM._(STR menu_CurFontOrientation, 41@)
41@ += 0x04
ARM._(STR menu_CurFontStatic, 41@)


// ADD TO BUFFER
call.1r( @menu_AddToBuffer, 40@, 21@)

0085: RET = 40@
return
     
:InsertFloat
menu_CurMenuInsert = Float_Type

0085: 20@ = 0@
0085: 21@ = 1@

call.1r( @malloc, 32)
RET += 4
ARM._(STRB TRUE, RET) // status -
RET++
ARM._(STRB TRUE, RET) // status Render
RET++
ARM._(STRB TRUE, RET) // status 2 // from attached
RET++
ARM._(STRB TRUE, RET) // status 1
RET++
0085: 40@ = RET

// Buffer Identity
0085: 41@ = 40@
ARM._(STR 20@, 41@)
41@ += 4
ARM._(STR Float_Type, 41@)
41@ += 4
call.1r( @malloc, 128)
ARM._(STR RET, 41@)

// Original Pos Save
41@ += 0x04
ARM._(STR, 3@, 41@)
41@ += 0x04
ARM._(STR, 4@, 41@)

// Insert Values
0085: 41@ = RET
ARM._(STR 2@, 41@) // text
41@ += 0x04
ARM._(STR 3@, 41@) // X
41@ += 0x04
ARM._(STR 4@, 41@) // Y
41@ += 0x04
ARM._(STR 5@, 41@) // scale
41@ += 0x04
ARM._(STR 6@, 41@) // R
41@ += 0x04
ARM._(STR 7@, 41@) // G
41@ += 0x04
ARM._(STR 8@, 41@) // B
41@ += 0x04
ARM._(STR 9@, 41@) // A
41@ += 0x04
ARM._(STR menu_CurFontStyle, 41@)
41@ += 0x04
ARM._(STR menu_CurFontEdge, 41@)
41@ += 0x04
ARM._(STR menu_CurFontProportional, 41@)
41@ += 0x04
ARM._(STR menu_CurFontWrapx, 41@)
41@ += 0x04
ARM._(STR menu_CurFontJustify, 41@)
41@ += 0x04
ARM._(STR menu_CurFontOrientation, 41@)
41@ += 0x04
ARM._(STR menu_CurFontStatic, 41@)


// ADD TO BUFFER
call.1r( @menu_AddToBuffer, 40@, 21@)

0085: RET = 40@
return

:InsertButton
menu_CurMenuInsert = Button_Type

0085: 20@ = 0@
0085: 21@ = 1@

call.1r( @malloc, 44)
ARM._(STR 0, RET) // touch id
RET += 4
ARM._(STR 0, RET) // touch stat
RET += 4
ARM._(STRB TRUE, RET) // status -
RET++
ARM._(STRB TRUE, RET) // status Render
RET++
ARM._(STRB TRUE, RET) // status 2 // from attached
RET++
ARM._(STRB TRUE, RET) // status 1
RET++
0085: 40@ = RET

// Buffer Identity
0085: 41@ = 40@
ARM._(STR 20@, 41@)
41@ += 4
ARM._(STR Button_Type, 41@)
41@ += 4
call.1r( @malloc, 128)
ARM._(STR RET, 41@)

// Original Pos Save
41@ += 0x04
ARM._(STR, 2@, 41@)
41@ += 0x04
ARM._(STR, 3@, 41@)

// Button Texture
41@ += 4
ARM._(STR menu_CurButtonTex1, 41@)
41@ += 4
ARM._(STR menu_CurButtonTex2, 41@)

// Insert Values
0085: 41@ = RET
ARM._(STR menu_CurButtonTex1, 41@) // Texture
41@ += 0x04
ARM._(STR 2@, 41@) // POS X
41@ += 0x04
ARM._(STR 3@, 41@) // POS Y
41@ += 0x04
ARM._(STR 4@, 41@) // SIZE X
41@ += 0x04
ARM._(STR 5@, 41@) // SIZE Y
41@ += 0x04
ARM._(STR 6@, 41@) // R
41@ += 0x04
ARM._(STR 7@, 41@) // G
41@ += 0x04
ARM._(STR 8@, 41@) // B
41@ += 0x04
ARM._(STR 9@, 41@) // A


// ADD TO BUFFER
call.1r( @menu_AddToBuffer, 40@, 21@)

0085: RET = 40@
return     

:InsertCheckBox
menu_CurMenuInsert = CheckBox_Type

0085: 20@ = 0@
0085: 21@ = 1@

call.1r( @malloc, 48)
ARM._(STR menu_CurCheckButtonPointer, RET) // check button stat
RET += 4
ARM._(STR 0, RET) // touch id
RET += 4
ARM._(STR 0, RET) // touch stat
RET += 4
ARM._(STRB TRUE, RET) // status -
RET++
ARM._(STRB TRUE, RET) // status Render
RET++
ARM._(STRB TRUE, RET) // status 2 // from attached
RET++
ARM._(STRB TRUE, RET) // status 1
RET++
0085: 40@ = RET

// Buffer Identity
0085: 41@ = 40@
ARM._(STR 20@, 41@)
41@ += 4
ARM._(STR CheckBox_Type, 41@)
41@ += 4
call.1r( @malloc, 128)
ARM._(STR RET, 41@)

// Original Pos Save
41@ += 0x04
ARM._(STR, 2@, 41@)
41@ += 0x04
ARM._(STR, 3@, 41@)

// Button Texture
41@ += 4
ARM._(STR menu_CurButtonTex1, 41@)
41@ += 4
ARM._(STR menu_CurButtonTex2, 41@)

// Insert Values
0085: 41@ = RET
ARM._(STR menu_CurButtonTex1, 41@) // Texture
41@ += 0x04
ARM._(STR 2@, 41@) // POS X
41@ += 0x04
ARM._(STR 3@, 41@) // POS Y
41@ += 0x04
ARM._(STR 4@, 41@) // SIZE X
41@ += 0x04
ARM._(STR 5@, 41@) // SIZE Y
41@ += 0x04
ARM._(STR 6@, 41@) // R
41@ += 0x04
ARM._(STR 7@, 41@) // G
41@ += 0x04
ARM._(STR 8@, 41@) // B
41@ += 0x04
ARM._(STR 9@, 41@) // A


// ADD TO BUFFER
call.1r( @menu_AddToBuffer, 40@, 21@)


0085: RET = 40@
return     
     
:InsertBackground
menu_CurMenuInsert = Background_Type

0085: 20@ = 0@
0085: 21@ = 1@

call.1r( @malloc, 32)
ARM._(STR 0.0, RET)
RET += 4
ARM._(STRB TRUE, RET) // status -
RET++
ARM._(STRB TRUE, RET) // status Render
RET++
ARM._(STRB TRUE, RET) // status 2 // from attached
RET++
ARM._(STRB TRUE, RET) // status 1
RET++
0085: 40@ = RET

// Buffer Identity
0085: 41@ = 40@
ARM._(STR 20@, 41@)
41@ += 4
ARM._(STR Background_Type, 41@)
41@ += 4
call.1r( @malloc, 128)
ARM._(STR RET, 41@)

// Original Pos Save
41@ += 0x04
ARM._(STR, 2@, 41@)
41@ += 0x04
ARM._(STR, 3@, 41@)

// Insert Values
0085: 41@ = RET
ARM._(STR menu_CurTex, 41@) // Texture
41@ += 0x04
ARM._(STR 2@, 41@) // POS X
41@ += 0x04
ARM._(STR 3@, 41@) // POS Y
41@ += 0x04
ARM._(STR 4@, 41@) // SIZE X
41@ += 0x04
ARM._(STR 5@, 41@) // SIZE Y
41@ += 0x04
ARM._(STR 6@, 41@) // R
41@ += 0x04
ARM._(STR 7@, 41@) // G
41@ += 0x04
ARM._(STR 8@, 41@) // B
41@ += 0x04
ARM._(STR 9@, 41@) // A


// ADD TO BUFFER
call.1r( @menu_AddToBuffer, 40@, 21@)

0085: RET = 40@
return

:menu_AddToBuffer
0085: 20@ = 0@ // Buffer
0085: 21@ = 1@ // Id

008B: 0@ = menu_CurThread // Number
1@ = operator.int(0@, "+", 4) // Buffer

if menu_CurMenuInsert == Background_Type
then
    10@ = 8  // Text
   else
    if menu_CurMenuInsert == Text_Type 
    then
        10@ = 12
       else 
        if menu_CurMenuInsert == Button_Type
        then
            10@ = 16
           else
            if menu_CurMenuInsert == CheckBox_Type
            then
                10@ = 20
               else
                if menu_CurMenuInsert == Int_Type
                then
                    10@ = 24
                   else
                    if menu_CurMenuInsert == Float_Type
                    then
                        10@ = 28
                    end 
                end 
            end 
        end
    end
end

2@ = operator.int(0@, "+", 10@)
1301: LDR 10@ 0@ // Number Buffer
1301: LDR 11@ 1@ // Buffer
1301: LDR 12@ 2@ // Target Buffer

// set buffer value
1301: LDR 32@ 10@ // Number
31@ = operator.int(32@, "*", 4)
005A: 31@ += 11@
ARM._(STR 20@, 31@)


if 21@ <> -1
then
    21@ *= 4
    005A: 21@ += 12@
    ARM._(STR 20@, 21@)
end

32@++
ARM._(STR 32@, 10@)
return

:init_RQ
//BQ INSERT MOD INIT
if gameVersion == 108
then
    call.1r( @malloc, 128)
    008B: 1@ = renderQueue
    1@ += 0x240
    ARM._(STR RET, 1@);
    008B: 1@ = RET
    1@ += 64
    2@ = operator.int(0x1ADC81, "+", g_libGTASA)
    ARM._(STR 2@, 1@)
    
    //RQ INSERT MOD
    call.2r( @longPatch, 0x1ADC80, @Queue)
    ARM.memprotect2(0x1ADCB8, renderQueue_ptr, 4)
   else
    if gameVersion == 200
    then
        //BQ INSERT MOD INIT
        call.1r( @malloc, 128)
        008B: 1@ = renderQueue
        1@ += 0x240
        ARM._(STR RET, 1@);
        008B: 1@ = RET
        1@ += 64
        2@ = operator.int(0x1D7141, "+", g_libGTASA)
        ARM._(STR 2@, 1@)
        
        //RQ INSERT MOD
        call.2r( @longPatch, 0x1D7140, @Queue200)
        ARM.memprotect2(0x1D7178, renderQueue_ptr, 4)
       else
        if gameVersion == 210
        then
            //BQ INSERT MOD INIT
            call.1r( @malloc, 128)
            008B: 1@ = renderQueue
            1@ += 0x240
            ARM._(STR RET, 1@);
            008B: 1@ = RET
            1@ += 64
            2@ = operator.int(0x1D70C1, "+", g_libGTASA)
            ARM._(STR 2@, 1@)
            
            //RQ INSERT MOD
            call.2r( @longPatch, 0x1D70C0, @Queue210)
            ARM.memprotect2(0x1D70F8, renderQueue_ptr, 4)
        end 
 
    end 
end
return

:init_rqGLCommand
2@ = operator.int(0x2258A5, "+", g_libGTASA)
008B: 1@ = renderQueue
1@ += 0x250
ARM._(STR 2@, 1@)  //rqGLCommand  
return

:init_glTextureBuffer
//Modification GL Texture Buffers
if gameVersion == 108
then
    call.1r( @malloc, 128)
    1@ = operator.int(0x61B2C0, "+", g_libGTASA)
    ARM.memprotect2(0x5D02D4, RET, 4)
    fastCall.3r(memcpy, RET, 1@, 12)
    
    call.1r( @malloc, 128)
    1@ = operator.int(0x5D2448, "+", g_libGTASA)
    ARM.memprotect2(0x5CFFFC, RET, 4)
    fastCall.3r(memcpy, 0@, 1@, 12)

    call.2r( @longPatch, 0x1A6510, @bindTex)
    0@ = operator.int(0x5D02D4, "+", g_libGTASA)
    ARM._(LDR 0@, 0@)
    ARM.memprotect2(0x1A656C, 0@, 4)
    0@ = operator.int(0x5CFFFC, "+", g_libGTASA)
    ARM._(LDR 0@, 0@)
    ARM.memprotect2(0x1A6570, 0@, 4)
    0@ = operator.int(0x5D2468, "+", g_libGTASA)
    ARM.memprotect2(0x1A6574, 0@, 4)
    ARM.memprotect2(0x1A6578, glActiveTexture, 4)
    ARM.memprotect2(0x1A657C, glBindTexture, 4)
    
   else
    if gameVersion == 200
    then
        call.1r( @malloc, 128)
        1@ = operator.int(0x6BCC18, "+", g_libGTASA)
        ARM.memprotect2(0x67847C, RET, 4)
        fastCall.3r(memcpy, RET, 1@, 12)
        
        call.1r( @malloc, 128)
        1@ = operator.int(0x67A278, "+", g_libGTASA)
        ARM.memprotect2(0x6781C0, RET, 4)
        fastCall.3r(memcpy, 0@, 1@, 12)
        
        call.2r( @longPatch, 0x1D1208, @bindTex)
        0@ = operator.int(0x67847C, "+", g_libGTASA)
        ARM._(LDR 0@, 0@)
        ARM.memprotect2(0x1D1264, 0@, 4)
        0@ = operator.int(0x6781C0, "+", g_libGTASA)
        ARM._(LDR 0@, 0@)
        ARM.memprotect2(0x1D1268, 0@, 4)
        0@ = operator.int(0x67A274, "+", g_libGTASA)
        ARM.memprotect2(0x1D126C, 0@, 4)
        ARM.memprotect2(0x1D1270, glActiveTexture, 4)
        ARM.memprotect2(0x1D1274, glBindTexture, 4)
        
        // set non binding
        call.1r( @malloc, 128)
        ARM.memprotect2(0x677648, 0@, 4)
       
       else
        if gameVersion == 210
        then
            call.1r( @malloc, 128)
            1@ = operator.int(0x6BCC18, "+", g_libGTASA)
            ARM.memprotect2(0x678474, RET, 4)
            fastCall.3r(memcpy, RET, 1@, 12)
            
            call.1r( @malloc, 128)
            1@ = operator.int(0x67A278, "+", g_libGTASA)
            ARM.memprotect2(0x6781B8, RET, 4)
            fastCall.3r(memcpy, 0@, 1@, 12)
            
            call.2r( @longPatch, 0x1D1188, @bindTex)
            0@ = operator.int(0x678474, "+", g_libGTASA)
            ARM._(LDR 0@, 0@)
            ARM.memprotect2(0x1D11E4, 0@, 4)
            0@ = operator.int(0x6781B8, "+", g_libGTASA)
            ARM._(LDR 0@, 0@)
            ARM.memprotect2(0x1D11E8, 0@, 4)
            0@ = operator.int(0x67A274, "+", g_libGTASA)
            ARM.memprotect2(0x1D11EC, 0@, 4)
            ARM.memprotect2(0x1D11F0, glActiveTexture, 4)
            ARM.memprotect2(0x1D11F4, glBindTexture, 4)
            
            // set non binding
            call.1r( @malloc, 128)
            ARM.memprotect2(0x677640, 0@, 4)
        end  
    end 
end
return


:init_RwRaster
call.1r( @createRasterFBOS, Shadow_FBO)
008A: Shadow_Raster = RET

call.1r( @createRasterFBOS, Shadow2_FBO)
008A: Shadow2_RASTER = RET

call.1r( @createRasterFBOS, Shadow3_FBO)
008A: Shadow3_RASTER = RET
return

:createRasterFBOS
0085: v7 = 0@
1301: LDR v1 0@
v1 += 0x04
1301: LDR v2 v1 // width
v1 += 0x04
1301: LDR v3 v1 // height

1301: LDR 0@ $2212
0@ += 0x60
1301: LDR 0@ 0@
0@ += 0x14
1301: LDR 0@ 0@
fastCall.4r($15085, v2, v3, 0@, 5)
008B: v1 = RET

ARM._(LDR 10@, $3139)
005C: 10@ += v1

1@ = operator.int(10@, "+", 24)
1301: LDR 1@ 1@
fastCall.1r($3158, 1@)

1301: LDR 0@ v7
ARM._(STR 0@, 10@)
10@ += 24
ARM._(STR v7, 10@)

008B: RET = v1
return


:init_GL_PUSH
//GL COMMAND
if gameVersion == 108
then
    //INSERT
    call.2r( @longPatch, 0x39B748, @hgl) // Call
    call.2r( @longPatch, 0x39B778, @rgl) // jump to
    ARM.memprotect2(0x39B82C, renderQueue_ptr, 4)
    
    //GL PROCESS RENDER
    call.2r( @longPatch, 0x39B924, @pgl)
    
    1@ = operator.int(0x39B925, "+", g_libGTASA)
    008B: 0@ = renderQueue
    0@ += 0x23C
    ARM._(STR 1@, 0@)
   else
    if gameVersion == 200
    then
        //INSERT
        call.2r( @longPatch, 0x3F7268, @hgl) // Call
        call.2r( @longPatch, 0x3F7298, @rgl) // jump to
        ARM.memprotect2(0x3F734C, renderQueue_ptr, 4)
        
        //GL PROCESS RENDER
        call.2r( @longPatch, 0x3F7B38, @pgl)
        
        1@ = operator.int(0x3F7B39, "+", g_libGTASA)
        008B: 0@ = renderQueue
        0@ += 0x23C
        ARM._(STR 1@, 0@)
       else
        if gameVersion == 210
        then
            //INSERT
            call.2r( @longPatch, 0x3F72B8, @hgl) // Call
            call.2r( @longPatch, 0x3F72E8, @rgl) // jump to
            ARM.memprotect2(0x3F739C, renderQueue_ptr, 4)
            
            //GL PROCESS RENDER
            call.2r( @longPatch, 0x3F7B88, @pgl)
            
            1@ = operator.int(0x3F7B89, "+", g_libGTASA)
            008B: 0@ = renderQueue
            0@ += 0x23C
            ARM._(STR 1@, 0@)
        end 
    end 
end
return

:flushGLCommand
// Rqinit
if gameVersion == 108
then
    call.0r( @script_CreateThread )
    008A: CTheScriptsOnFunc = RET
    
    call.2r( @longPatch, 0x2258A4, @CMDONFNC)
    ARM.memprotect2(0x2258CC, CTheScriptsOnFunc, 4)    
    call.2r( @script_onFunction, CTheScriptsOnFunc, OpenGLrqInit)
    
    
    2@ = operator.int(0x2258A5, "+", g_libGTASA)
    008B: 1@ = renderQueue
    1@ += 0x250
    ARM._(STR 2@, 1@)  //rqGLCommand  
   else
    if gameVersion == 200
    then
        call.0r( @script_CreateThread )
        008A: CTheScriptsOnFunc = RET
        
        call.2r( @longPatch, 0x24D8A8, @CMDONFNC)
        ARM.memprotect2(0x24D8D0, CTheScriptsOnFunc, 4)    
        call.2r( @script_onFunction, CTheScriptsOnFunc, OpenGLrqInit)
        
        
        2@ = operator.int(0x24D8A9, "+", g_libGTASA)
        008B: 1@ = renderQueue
        1@ += 0x250
        ARM._(STR 2@, 1@)  //rqGLCommand 
       else
        if gameVersion == 210
        then
            call.0r( @script_CreateThread )
            008A: CTheScriptsOnFunc = RET
            
            call.2r( @longPatch, 0x24D828, @CMDONFNC)
            ARM.memprotect2(0x24D850, CTheScriptsOnFunc, 4)    
            call.2r( @script_onFunction, CTheScriptsOnFunc, OpenGLrqInit)
            
            
            2@ = operator.int(0x24D829, "+", g_libGTASA)
            008B: 1@ = renderQueue
            1@ += 0x250
            ARM._(STR 2@, 1@)  //rqGLCommand  
        end   
    end 
end
rq.Insert(rqGlCommand, EternalChar, 0)
rqFlush()
return         

:PlaceBL
0085: 10@ = 0@
0062: 1@ -= 0@
1@ -= 4
fastCall.2r(_and, 1@, 0x007FFFFF)
0085: R0 = RET
fastCall.2r(_shr, R0, 12)
008B: R1 = RET
fastCall.2r(_and, R0, 0x00000FFF)
008B: R2 = RET
fastCall.2r(_shr, R2, 1)
008B: R2 = RET
fastCall.2r(_or, 0xF800, R2)
008B: R3 = RET
fastCall.2r(_shl, R3, 16)
008B: R3 = RET
fastCall.2r(_or, 0xF000, R1)
008B: R4 = RET
fastCall.2r(_or, R3, R4)
008B: R2 = RET
ARM.memprotect2(10@, R2, 4);
return

:CGameBuffer
fastCall.1r(malloc, 38000)
008A: BufferDrawFont = RET

fastCall.1r(malloc, 256)
008A: webf = 0@

fastCall.1r(malloc, 2048)
008A: EternalChar = 0@

fastCall.1r(malloc, 0x3800)
008A: MatrixStorage = RET

fastCall.1r(malloc, 512000)
008A: Shader_Frag_Eternal = RET     

fastCall.1r(malloc, 512)
008A: onLoadShaderCompute = RET

0@ = 12
0@ *= 3
0@ *= 255
fastCall.1r(malloc, 0@)
008A: lightPosition = RET     

0@ = 12
0@ *= 3
0@ *= 255
fastCall.1r(malloc, 0@)
008A: prevPoinLightBuffer = RET     
               

0@ = 12
0@ *= 4
0@ *= 5
fastCall.1r(malloc, 0@)
008A: SpotlightPosition = RET     
                 
fastCall.1r(malloc, 60048)
008A: CharPhoneInfoLog = RET

fastCall.3r( memset, CharPhoneInfoLog, 0, 60048)

fastCall.1r(malloc, 2048)
008A: matrix4x4 = RET

fastCall.1r(malloc, 64)
008A: previousProj = 0@

fastCall.1r(malloc, 64)
008A: previousView = 0@
    
fastCall.1r(malloc, CSTATIC_VERTEX_BUFFER_SIZE)
008A: CSTATIC_VERTEX_BUFFER = RET

fastCall.1r(malloc, CSTATIC_INDEX_BUFFER_SIZE)
008A: CSTATIC_INDEX_BUFFER = RET

CDYNAMIC_VERTEX_BUFFER_SIZE = CSTATIC_VERTEX_BUFFER_SIZE
CDYNAMIC_INDEX_BUFFER_SIZE = CSTATIC_INDEX_BUFFER_SIZE

0@ = operator.int(8, "*", 0xFFFF)
fastCall.1r(malloc, 0@)
008A: CObjs_Buff = RET

0@ = operator.int(8, "*", 0xFFFF)
fastCall.3r(memset, CObjs_Buff, 0, 0@)
return
           
:LongPatch
30@ = script.getOffset(1@)
2@ = 0 // size
while true
    ARM._(LDR 31@, 30@)
    if 31@ == 0x4D524145
    then
        break
    end
    2@ += 0x02
    30@ += 0x02
end

30@ = operator.int( CTheScriptsHead, "+", 0x190)
ARM._(LDR 30@, 30@)
1@ = script.getOffset(1@)
005A: 0@ += g_libGTASA
fastCall.3r(30@, 0@, 1@, 2@)
return

:LongPatch2
0085: 30@ = 1@
2@ = 0 // size
while true
    ARM._(LDR 31@, 30@)
    if 31@ == 0x4D524145
    then
        break
    end
    2@ += 0x02
    30@ += 0x02
end

30@ = operator.int( CTheScriptsHead, "+", 0x190)
ARM._(LDR 30@, 30@)
1@ = script.getOffset(1@)
005A: 0@ += g_libGTASA
fastCall.3r(30@, 0@, 1@, 2@)
return

/*void*/:MemoryAddres_Setting{}
// water detail
//ARM.memprotect($15343 value 100 size 4);

//Storage
$6 *= 100000
ARM._(STR $6, $15024)

ARM._(STR $13, $3175) //Frame limit

//DistScale
ARM.memprotect2($2007, $16, 4)

// Clock
$22 *= 1000
ARM._(STR $22, $15025)

//drawdist
if $35 <> 0
then
    ARM.memprotect2($2017, $36, 4)    
    ARM.memprotect2($2018, $36, 4)
end                  

/*
//TrafficLight lighting
if $142 <> 0
then
    ARM.memprotect2($2043 value $143 size 4 add_ib 1)      
    ARM.memprotect2($2044 value $144 size 4 add_ib 1) 
    ARM.memprotect2($2045 value $145 size 4 add_ib 1)                
end
*/

//TextureRender

0@ = operator.float(768000.0, "*", $126)
1@ = operator.float(512000.0, "*", $126)
2@ = operator.float(225280.0, "*", $126)
ARM.memprotect($3176, 0@, 4)
ARM.memprotect($3177, 1@, 4)
ARM.memprotect($3178, 2@, 4)
return

:CloadScripts
//call.1r( @GetScript, @F_ProcEntity)
//008A: CProcEntity = RET
/*
call.1r( @GetScript, @F_CProcPed)
008A: CProcPed = RET
call.1r( @GetScript, @F_CProcObj)
008A: CProcObj = RET
call.1r( @GetScript, @F_CProcVeh)
008A: CProcVeh = RET
call.1r( @GetScript, @F_COpenAlWVF)
008A: COpenAlWVF = RET
*/
call.1r( @GetScript, @F_Render2D)
008A: CRender2D = RET
call.1r( @GetScript, @F_CRender)
008A: CRender = RET
call.1r( @GetScript, @F_CUpdates)
008A: CUpdates = RET
call.1r( @GetScript, @F_CInitialise)
008A: CInitialise = RET
call.1r( @GetScript, @F_OpenGLrqInit)
008A: OpenGLrqInit = RET
return       


:ReadFileConfiguration
0085: 10@ = 0@
ARM._(LDR 12@, $2276)
ARM._(STR 1, $2276)
1@ = Script.getOffset(@ModeS1)
fastCall.2r($15015, 10@, 1@)
0085: 20@ = RET
if 20@ <> 0
then
    fastCall.1r($15241, 20@)
    008B: 1@ = RET
    RET++
    fastCall.1r(malloc, RET)
    008A: 11@ = RET
    fastCall.3r($15246, 20@, 11@, 1@)
    fastCall.1r($15242, 20@)    
    0085: 0@ = 11@
   else 0@ = 0 
end
ARM._(STR 12@, $2276)
return


:GetScript
10@ = script.getOffset(0@)
ARM._(LDR 12@, $2276)
ARM._(STR 1, $2276)
1@ = Script.getOffset(@ModeS1)
fastCall.2r($15015, 10@, 1@)
0085: 20@ = RET
if 20@ <> 0
then
    fastCall.1r($15241, 20@)
    008B: 1@ = RET         
    RET++
    RET += 4
    fastCall.1r(malloc, RET)
    ARM._(STR TheScriptBuffMod, RET)
    11@ = operator.int(RET, "+", 4)
    fastCall.3r($15246, 20@, 11@, 1@)
    fastCall.1r($15242, 20@)    
    0085: 0@ = 11@
   else 0@ = 0 
end
ARM._(STR 12@, $2276)
return

:allocInternalMemmory
008B: 1@ = CGlobalBufferon
005E: CGlobalBufferon += 0@
0085: 0@ = 1@
return

:malloc
0085: 10@ = 0@
fastCall.1r(malloc, 0@)
if RET == 0
then
    call.1r( @logsetcurrent, @logMemError)
    ARM.memprotect2(0x39B610, 0xFDC8F7FF, 4)
    RET = 0
    script.return()
end
0085: R40 = RET
fastCall.3r(memset, RET, 0, 10@)
0085: RET = R40
return

:getAddres
if gameVersion == 108
then
    1_08()
    call.2r( @longPatch, 0x1C3C04, @operator)
    _and = operator.int(0x1C3C05, "+", g_libGTASA)
    _or = operator.int(_and, "+", 4)
    _xor = operator.int(_or, "+", 4)
    _not = operator.int(_xor, "+", 4)
    _shr = operator.int(_not, "+", 4)
    _shl = operator.int(_shr, "+", 4)    
   else     
    if gameVersion == 200
    then
        2_00()
        call.2r( @longPatch, 0x1F3D56, @operator)
        _and = operator.int(0x1F3D57, "+", g_libGTASA)
        _or = operator.int(_and, "+", 4)
        _xor = operator.int(_or, "+", 4)
        _not = operator.int(_xor, "+", 4)
        _shr = operator.int(_not, "+", 4)
        _shl = operator.int(_shr, "+", 4)    
       else
        if gameVersion == 210
        then
            2_10()
            call.2r( @longPatch, 0x1F3CD6, @operator)
            _and = operator.int(0x1F3CD7, "+", g_libGTASA)
            _or = operator.int(_and, "+", 4)
            _xor = operator.int(_or, "+", 4)
            _not = operator.int(_xor, "+", 4)
            _shr = operator.int(_not, "+", 4)
            _shl = operator.int(_shr, "+", 4)
        end
    end
end
return  

:1_08
0@ = operator.int(0x5CD9C8, "+", g_libGTASA)
ARM._(LDR malloc, 0@)
0@ = operator.int(0x5CD7C0, "+", g_libGTASA)
ARM._(LDR free, 0@)
0@ = operator.int(0x5CD7A8, "+", g_libGTASA)
ARM._(LDR strlen, 0@)
0@ = operator.int(0x5CD94C, "+", g_libGTASA)
ARM._(LDR strcpy, 0@)
0@ = operator.int(0x5CDA24, "+", g_libGTASA)
ARM._(LDR memcpy, 0@)
0@ = operator.int(0x5CD988, "+", g_libGTASA)
ARM._(LDR memcmp, 0@)
0@ = operator.int(0x5CD91C, "+", g_libGTASA)
ARM._(LDR memset, 0@)
0@ = operator.int(0x5CDACC, "+", g_libGTASA)
ARM._(LDR sprintf, 0@)
0@ = operator.int(0x5CD8B8, "+", g_libGTASA)
ARM._(LDR sscanf, 0@)
0@ = operator.int(0x5CDB88, "+", g_libGTASA)
ARM._(LDR strcat, 0@)
0@ = operator.int(0x5CDB14, "+", g_libGTASA)
ARM._(LDR strstr, 0@)
0@ = operator.int(0x5CD9D4, "+", g_libGTASA)
ARM._(LDR eglGetProcAddress, 0@)
normalize = operator.int(0x3E9FF9, "+", g_libGTASA); //CVector::Normalise
crossProduct = operator.int(0x3E9D3D, "+", g_libGTASA); //CrossProduct
0@ = operator.int(0x5CD9E0, "+", g_libGTASA); // cosf
ARM._(LDR cosf, 0@)
0@ = operator.int(0x5CDAD8, "+", g_libGTASA); // sinf
ARM._(LDR sinf, 0@)    

RwRenderState = operator.int(0x186361, "+", g_libGTASA)

$2276 = operator.int(0x8B6F68, "+", g_libGTASA)

// lod dist scale
$2007 = 0x38B304

//drawdistance
$2017 = 0x3BE2C4
$2018 = 0x3BEA24
                         
// trafficlight lighting
$2043 = 0x3169A4
$2044 = 0x3169A8
$2045 = 0x3169AC

// widget alpha
$2049 = operator.int(0x273E18, "+", g_libGTASA)        

// sun color
$2202 = operator.int(0x8C9AC0, "+", g_libGTASA)        

// RwCamera
$2212 = operator.int(0x95B064, "+", g_libGTASA)        

// font size
$2213 = operator.int(0x99D754, "+", g_libGTASA)        

// sky color bottom
$2215 = operator.int(0x8C9ABA, "+", g_libGTASA)        
$2216 = operator.int(0x8C9ABC, "+", g_libGTASA)        
$2217 = operator.int(0x8C9ABE, "+", g_libGTASA)        

// camera
$2218 = operator.int(0x8B081C, "+", g_libGTASA)        

// idle--
$2220 = operator.int(0x63E074, "+", g_libGTASA)        

$2221 = operator.int(0x63E06C, "+", g_libGTASA)        

$2222 = operator.int(0x9E7590, "+", g_libGTASA)        

// gameState
$2223 = operator.int(0x9E75B8, "+", g_libGTASA)        
$2224 = operator.int(0x608E05, "+", g_libGTASA)        

// farClip value
$2225 = operator.int(0x8C9AE0, "+", g_libGTASA)        
$2227 = operator.int(0x8C9AE4, "+", g_libGTASA)        

$2253 = operator.int(0x658144, "+", g_libGTASA)        
$2254 = operator.int(0x658148, "+", g_libGTASA)        

// isTimecyc Reload?
$2255 = operator.int(0x5DDD24, "+", g_libGTASA)        

// idle?
$3100 = operator.int(0x6580C4, "+", g_libGTASA)
$3101 = operator.int(0x27E3AD, "+", g_libGTASA)
$3102 = operator.int(0x26EF55, "+", g_libGTASA)
$3103 = operator.int(0x272C0D, "+", g_libGTASA)
$3104 = operator.int(0x52FE19, "+", g_libGTASA)

$3105 = operator.int(0x1AD6F5, "+", g_libGTASA)
$3106 = operator.int(0x1AD711, "+", g_libGTASA)
$3107 = operator.int(0x293A6D, "+", g_libGTASA)
$3108 = operator.int(0x293C89, "+", g_libGTASA)
$3109 = operator.int(0x54DCF9, "+", g_libGTASA)

// projection
$3110 = operator.int(0x1914C5, "+", g_libGTASA)

// view
$3111 = operator.int(0x1914A1, "+", g_libGTASA)

// render
$3112 = operator.int(0x5481C9, "+", g_libGTASA)
$3113 = operator.int(0x5286ED, "+", g_libGTASA)
$3114 = operator.int(0x523B35, "+", g_libGTASA)
$3115 = operator.int(0x3B51B9, "+", g_libGTASA)
$3116 = operator.int(0x5366D1, "+", g_libGTASA)
$3117 = operator.int(0x553D7D, "+", g_libGTASA)
$3118 = operator.int(0x54AB71, "+", g_libGTASA)

// lightstored
$3119 = operator.int(0x9A5E50, "+", g_libGTASA)
$3120 = operator.int(0x5CED54, "+", g_libGTASA)

//delta
$3121 = operator.int(0x2386D5, "+", g_libGTASA)
$3122 = operator.int(0x2386D5, "+", g_libGTASA)

//check matrix
$3123 = operator.int(0x240C25, "+", g_libGTASA)

// gameTime
$3124 = operator.int(0x8B18A2, "+", g_libGTASA)

// interpolate
$3125 = operator.int(0x9DB984, "+", g_libGTASA)
            
// old
$3126 = operator.int(0x9DB992, "+", g_libGTASA)

// new            
$3127 = operator.int(0x9DB990, "+", g_libGTASA)

// rain value
$3128 = operator.int(0x9DB960, "+", g_libGTASA)

// sky color Top
$3129 = operator.int(0x8C9AB4, "+", g_libGTASA)

// sky color Bottom
$3130 = operator.int(0x8C9ABA, "+", g_libGTASA)

//camera
$3135 = operator.int(0x1AEBB1, "+", g_libGTASA)
$3136 = operator.int(0x24086D, "+", g_libGTASA)
$3137 = operator.int(0x36FCDD, "+", g_libGTASA)
$3138 = operator.int(0x3704B1, "+", g_libGTASA)


//Raster
$3139 = operator.int(0x611844, "+", g_libGTASA)

// shader
$3140 = operator.int(0x612850, "+", g_libGTASA)

// shadow
$3141 = operator.int(0x8C9AD8, "+", g_libGTASA)


// renderwidth
$3142 = operator.int(0x6126FC, "+", g_libGTASA)

//renderHeight
$3143 = operator.int(0x6126F8, "+", g_libGTASA)

// emu
$3144 = operator.int(0x612818, "+", g_libGTASA)

// flushSinceSwap
$3145 = operator.int(0x6126F4, "+", g_libGTASA)

// operatorNew
0@ = operator.int(0x5CDA2C, "+", g_libGTASA) //operator new
ARM._(LDR $3146, 0@);

$3147 = operator.int(0x1A64F9, "+", g_libGTASA) //GetES2TargetFormat
$3148 = operator.int(0x5C1208, "+", g_libGTASA) // Func Pointer

// funcShader
$3149 = operator.int(0x5C11C0, "+", g_libGTASA)

// uniform bone
$3150 = operator.int(0x23EBC5, "+", g_libGTASA)

// uniform matrix
$3151 = operator.int(0x23EB89, "+", g_libGTASA)

// uniform vector
$3152 = operator.int(0x23EBAD, "+", g_libGTASA)

// percent resolution
$3153 = operator.int(0x63E3A4, "+", g_libGTASA)

// backTarget
$3154 = operator.int(0x612730, "+", g_libGTASA)

// createTarget
$3155 = operator.int(0x1A6D5D, "+", g_libGTASA)

// hackTarget
$3156 = operator.int(0x61272C, "+", g_libGTASA)

// destroy Raster
$3157 = operator.int(0x185A61, "+", g_libGTASA)

// destroy Target
$3158 = operator.int(0x1A71BD, "+", g_libGTASA)

// touch down
$3159 = operator.int(0x2707DD, "+", g_libGTASA)

// touch position
$3160 = operator.int(0x2707F5, "+", g_libGTASA)

// Delta
$3161 = operator.int(0x657574, "+", g_libGTASA)

// draw mode
$3162 = operator.int(0x19483D, "+", g_libGTASA)

// triangle strip
$3163 = operator.int(0x1DE611, "+", g_libGTASA)
                    
// triangles strip
$3164 = operator.int(0x1DE715, "+", g_libGTASA)

// vertex update
$3165 = operator.int(0x1A8D0D, "+", g_libGTASA)

// index update
$3166 = operator.int(0x1A90FD, "+", g_libGTASA)

// render effects
$3167 = operator.int(0x317231, "+", g_libGTASA)
$3168 = operator.int(0x77E7AC, "+", g_libGTASA)
$3169 = operator.int(0x8B10E0, "+", g_libGTASA)
$3170 = operator.int(0x8B0808, "+", g_libGTASA)
            
// render specialfx
$3171 = operator.int(0x54D775, "+", g_libGTASA)

// num light
$3172 = operator.int(0x9A5E50, "+", g_libGTASA)

// renderQueue
$3173 = operator.int(0x61B2E8, "+", g_libGTASA)

// rqInitialise
$3174 = operator.int(0x1A8739, "+", g_libGTASA)

// fps
$3175 = operator.int(0x95B074, "+", g_libGTASA)

// texture render
$3176 = operator.int(0x1BE590, "+", g_libGTASA)
$3177 = operator.int(0x1BE594, "+", g_libGTASA)
$3178 = operator.int(0x1BE598, "+", g_libGTASA)

// reinit streaming
$3179 = operator.int(0x295051, "+", g_libGTASA)
return

:2_00     
0@ = operator.int(0x671C0C, "+", g_libGTASA)
ARM._(LDR malloc, 0@)
0@ = operator.int(0x674BE4, "+", g_libGTASA)
ARM._(LDR free, 0@)
0@ = operator.int(0x671630, "+", g_libGTASA)
ARM._(LDR strlen, 0@)
0@ = operator.int(0x674078, "+", g_libGTASA)
ARM._(LDR strcpy, 0@)
0@ = operator.int(0x67505C, "+", g_libGTASA) // aeabi
//ARM._(LDR memcpy, 0@)
0@ = operator.int(0x6744F8, "+", g_libGTASA)
ARM._(LDR memcmp, 0@)
0@ = operator.int(0x66EC00, "+", g_libGTASA) // aeabi
//ARM._(LDR memset, 0@)
sprintf = operator.int(0x5E6BC1, "+", g_libGTASA) // aeabi
0@ = operator.int(0x66F7C4, "+", g_libGTASA)
ARM._(LDR sscanf, 0@)
0@ = operator.int(0x66E8A8, "+", g_libGTASA)
ARM._(LDR strcat, 0@)
0@ = operator.int(0x66F970, "+", g_libGTASA)
ARM._(LDR strstr, 0@)
0@ = operator.int(0x674DA8, "+", g_libGTASA)
ARM._(LDR eglGetProcAddress, 0@)
normalize = operator.int(0x450B81, "+", g_libGTASA); //CVector::Normalise
crossProduct = operator.int(0x450875, "+", g_libGTASA); //CrossProduct
0@ = operator.int(0x66F280, "+", g_libGTASA); // cosf
ARM._(LDR cosf, 0@)
0@ = operator.int(0x670194, "+", g_libGTASA); // sinf
ARM._(LDR sinf, 0@)    

RwRenderState = operator.int(0x1AF025, "+", g_libGTASA)

$2276 = operator.int(0x9586F4, "+", g_libGTASA)

//lod dist scale
$2007 = 0x3DDC34

//drawdistance
$2017 = 0x41F300
$2018 = 0x41FF6C

// trafficlight lighting
$2043 = 0x362E20
$2044 = 0x362E24
$2045 = 0x362E28

// widget alpha
$2049 = operator.int(0x2B3DE8, "+", g_libGTASA)        

// sun color
$2202 = operator.int(0x96657C, "+", g_libGTASA)        

// RwCamera
$2212 = operator.int(0x9FC93C, "+", g_libGTASA)        

// font size
$2213 = operator.int(0xA297BC, "+", g_libGTASA)        

// sky color bottom
$2215 = operator.int(0x966576, "+", g_libGTASA)        
$2216 = operator.int(0x966578, "+", g_libGTASA)        
$2217 = operator.int(0x96657A, "+", g_libGTASA)        

// camera
$2218 = operator.int(0x951FBC, "+", g_libGTASA)        

// idle--
$2220 = operator.int(0x6E0098, "+", g_libGTASA)        
$2221 = operator.int(0x6E0090, "+", g_libGTASA)        
$2222 = operator.int(0xA987F0, "+", g_libGTASA)        

// gameState
$2223 = operator.int(0xA987C8, "+", g_libGTASA)        
$2224 = operator.int(0x9599B8, "+", g_libGTASA)        

// farClip value
$2225 = operator.int(0x96659C, "+", g_libGTASA)        
$2227 = operator.int(0x9665A0, "+", g_libGTASA)        
$2253 = operator.int(0x6FA2C0, "+", g_libGTASA)        
$2254 = operator.int(0x6FA2C4, "+", g_libGTASA)        

// isTimecyc Reload?
$2255 = operator.int(0x6855D8, "+", g_libGTASA)        

// idle?
$3100 = operator.int(0x6F3A14, "+", g_libGTASA)
$3101 = operator.int(0x2BE269, "+", g_libGTASA)
$3102 = operator.int(0x2B0CBD, "+", g_libGTASA)
$3103 = operator.int(0x2B0B01, "+", g_libGTASA)
$3104 = operator.int(0x5A4E85, "+", g_libGTASA)

$3105 = operator.int(0x1D5AB9, "+", g_libGTASA)
$3106 = operator.int(0x1D5B4D, "+", g_libGTASA)
$3107 = operator.int(0x2D549D, "+", g_libGTASA)
$3108 = operator.int(0x2D5C69, "+", g_libGTASA)
$3109 = operator.int(0x5C504D, "+", g_libGTASA)
     
// projection
$3110 = operator.int(0x1BA6F9, "+", g_libGTASA)

// view
$3111 = operator.int(0x1BA6E1, "+", g_libGTASA)

// render
$3112 = operator.int(0x5BE8C5, "+", g_libGTASA)
$3113 = operator.int(0x59D9D1, "+", g_libGTASA)
$3114 = operator.int(0x598281, "+", g_libGTASA)
$3115 = operator.int(0x413D5D, "+", g_libGTASA)
$3116 = operator.int(0x5AB729, "+", g_libGTASA)
$3117 = operator.int(0x5CBB5D, "+", g_libGTASA)
$3118 = operator.int(0x5C2475, "+", g_libGTASA)

// lightstored
$3119 = operator.int(0xA46E70, "+", g_libGTASA)
$3120 = operator.int(0x676FF8, "+", g_libGTASA)

//delta
$3121 = operator.int(0x26C251, "+", g_libGTASA)
$3122 = operator.int(0x26C251, "+", g_libGTASA)

//check matrix
$3123 = operator.int(0x2794AD, "+", g_libGTASA)

// gameTime
$3124 = operator.int(0x953144, "+", g_libGTASA)

// interpolate
$3125 = operator.int(0xA7D140, "+", g_libGTASA)
            
// old
$3126 = operator.int(0xA7D134, "+", g_libGTASA)

// new            
$3127 = operator.int(0xA7D136, "+", g_libGTASA)

// rain value
$3128 = operator.int(0xA7D164, "+", g_libGTASA)

// sky color Top
$3129 = operator.int(0x966570, "+", g_libGTASA)

// sky color Bottom
$3130 = operator.int(0x966576, "+", g_libGTASA)

//camera
$3135 = operator.int(0x1D851D, "+", g_libGTASA)
$3136 = operator.int(0x2791FD, "+", g_libGTASA)
$3137 = operator.int(0x3DE811, "+", g_libGTASA)
$3138 = operator.int(0x3DE735, "+", g_libGTASA)


//Raster
$3139 = operator.int(0x6B31FC, "+", g_libGTASA)

// shader
$3140 = operator.int(0x6B4580, "+", g_libGTASA)

// shadow
$3141 = operator.int(0x966594, "+", g_libGTASA)

// renderwidth
$3142 = operator.int(0x6B407C, "+", g_libGTASA)

//renderHeight
$3143 = operator.int(0x6B4080, "+", g_libGTASA)

// emu
$3144 = operator.int(0x6B4174, "+", g_libGTASA)

// flushSinceSwap
$3145 = operator.int(0x6B4084, "+", g_libGTASA)

// operatorNew
0@ = operator.int(0x673144, "+", g_libGTASA) //operator new
ARM._(LDR $3146, 0@);

$3147 = operator.int(0x1D000D, "+", g_libGTASA) //GetES2TargetFormat
$3148 = operator.int(0x6608EC, "+", g_libGTASA) // Func Pointer

// funcShader
$3149 = operator.int(0x6608B0, "+", g_libGTASA)

// uniform matrix
$3151 = operator.int(0x277455, "+", g_libGTASA)

// uniform vector
$3152 = operator.int(0x277479, "+", g_libGTASA)

// uniform bone
$3150 = operator.int(0x277491, "+", g_libGTASA)

// percent resolution
$3153 = operator.int(0x6E041C, "+", g_libGTASA)

// backTarget
$3154 = operator.int(0x6B4058, "+", g_libGTASA)

// createTarget
$3155 = operator.int(0x1D0791, "+", g_libGTASA)

// hackTarget
$3156 = operator.int(0x6B405C, "+", g_libGTASA)

// destroy Raster
$3157 = operator.int(0x1AE9F9, "+", g_libGTASA)

// destroy Target
$3158 = operator.int(0x1D0BB1, "+", g_libGTASA)

// touch down
$3159 = operator.int(0x2B0A39, "+", g_libGTASA)

// touch position
$3160 = operator.int(0x2B0A55, "+", g_libGTASA)

// Delta
$3161 = operator.int(0x6F4358, "+", g_libGTASA)

// draw mode
$3162 = operator.int(0x1BCC59, "+", g_libGTASA)

// triangle strip
$3163 = operator.int(0x2116F5, "+", g_libGTASA)
                    
// triangles strip
$3164 = operator.int(0x21181D, "+", g_libGTASA)

// vertex update
$3165 = operator.int(0x1D25C9, "+", g_libGTASA)

// index update
$3166 = operator.int(0x1D2C41, "+", g_libGTASA)

// render effects
$3167 = operator.int(0x363DA1, "+", g_libGTASA)
$3168 = operator.int(0x820520, "+", g_libGTASA)
$3169 = operator.int(0x952880, "+", g_libGTASA)
$3170 = operator.int(0x951FA8, "+", g_libGTASA)
            
// render specialfx
$3171 = operator.int(0x5C0AC5, "+", g_libGTASA)

// num light
$3172 = operator.int(0xA46E70, "+", g_libGTASA)

// renderQueue
$3173 = operator.int(0x6BCC54, "+", g_libGTASA)

// rqInitialise
$3174 = operator.int(0x1D24E1, "+", g_libGTASA)

// fps
$3175 = operator.int(0x9FC908, "+", g_libGTASA)

// texture render
$3176 = operator.int(0x1E97C8, "+", g_libGTASA)
$3177 = operator.int(0x1E97C4, "+", g_libGTASA)
$3178 = operator.int(0x1E97BC, "+", g_libGTASA)

// reinit streaming
$3179 = operator.int(0x2CF885, "+", g_libGTASA)
return  

:2_10
0@ = operator.int(0x671C24, "+", g_libGTASA)
ARM._(LDR malloc, 0@)
0@ = operator.int(0x674BD4, "+", g_libGTASA)
ARM._(LDR free, 0@)
0@ = operator.int(0x67163C, "+", g_libGTASA)
ARM._(LDR strlen, 0@)
0@ = operator.int(0x674098, "+", g_libGTASA)
ARM._(LDR strcpy, 0@)
0@ = operator.int(0x675048, "+", g_libGTASA) // aeabi
//ARM._(LDR memcpy, 0@)
0@ = operator.int(0x67450C, "+", g_libGTASA)
ARM._(LDR memcmp, 0@)
0@ = operator.int(0x66EBF4, "+", g_libGTASA) // aeabi
//ARM._(LDR memset, 0@)
sprintf = operator.int(0x5E68F9, "+", g_libGTASA) // aeabi
0@ = operator.int(0x66F7C4, "+", g_libGTASA)
ARM._(LDR sscanf, 0@)
0@ = operator.int(0x66E8A0, "+", g_libGTASA)
ARM._(LDR strcat, 0@)
0@ = operator.int(0x66F974, "+", g_libGTASA)
ARM._(LDR strstr, 0@)
0@ = operator.int(0x672AD8, "+", g_libGTASA)
ARM._(LDR eglGetProcAddress, 0@)
normalize = operator.int(0x450BD1, "+", g_libGTASA); //CVector::Normalise
crossProduct = operator.int(0x4508C5, "+", g_libGTASA); //CrossProduct
0@ = operator.int(0x66F288, "+", g_libGTASA); // cosf
ARM._(LDR cosf, 0@)
0@ = operator.int(0x6701A0, "+", g_libGTASA); // sinf
ARM._(LDR sinf, 0@)    

RwRenderState = operator.int(0x1AEFA5, "+", g_libGTASA)

$2276 = operator.int(0x9586F4, "+", g_libGTASA)

//lod dist scale
$2007 = 0x3DDC84

//drawdistance
$2017 = 0x41F350
$2018 = 0x41FFBC

// trafficlight lighting
$2043 = 0x362E70
$2044 = 0x362E74
$2045 = 0x362E78

// widget alpha
$2049 = operator.int(0x2B3E58, "+", g_libGTASA)        

// sun color
$2202 = operator.int(0x96657C, "+", g_libGTASA)        

// RwCamera
$2212 = operator.int(0x9FC93C, "+", g_libGTASA)        

// font size
$2213 = operator.int(0xA297BC, "+", g_libGTASA)        

// sky color bottom
$2215 = operator.int(0x966576, "+", g_libGTASA)        
$2216 = operator.int(0x966578, "+", g_libGTASA)        
$2217 = operator.int(0x96657A, "+", g_libGTASA)        

// camera
$2218 = operator.int(0x951FBC, "+", g_libGTASA)        

// idle--
$2220 = operator.int(0x6E00A0, "+", g_libGTASA)        
$2221 = operator.int(0x6E0098, "+", g_libGTASA)        
$2222 = operator.int(0xA987F0, "+", g_libGTASA)        

// gameState
$2223 = operator.int(0xA987C8, "+", g_libGTASA)        
$2224 = operator.int(0x9599B8, "+", g_libGTASA)        

// farClip value
$2225 = operator.int(0x96659C, "+", g_libGTASA)        
$2227 = operator.int(0x9665A0, "+", g_libGTASA)        
$2253 = operator.int(0x6FA2C8, "+", g_libGTASA)        
$2254 = operator.int(0x6FA2CC, "+", g_libGTASA)        

// isTimecyc Reload?
$2255 = operator.int(0x6855D8, "+", g_libGTASA)        

// idle?
$3100 = operator.int(0x6F3A1C, "+", g_libGTASA)
$3101 = operator.int(0x2BE2D9, "+", g_libGTASA)
$3102 = operator.int(0x2B0D2D, "+", g_libGTASA)
$3103 = operator.int(0x2B0B71, "+", g_libGTASA)
$3104 = operator.int(0x5A4EF5, "+", g_libGTASA)

$3105 = operator.int(0x1D5A39, "+", g_libGTASA)
$3106 = operator.int(0x1D5ACD, "+", g_libGTASA)
$3107 = operator.int(0x2D550D, "+", g_libGTASA)
$3108 = operator.int(0x2D5CD9, "+", g_libGTASA)
$3109 = operator.int(0x5C509D, "+", g_libGTASA)
     
// projection
$3110 = operator.int(0x1BA679, "+", g_libGTASA)

// view
$3111 = operator.int(0x1BA661, "+", g_libGTASA)

// render
$3112 = operator.int(0x5BE915, "+", g_libGTASA)
$3113 = operator.int(0x59DA41, "+", g_libGTASA)
$3114 = operator.int(0x5982F1, "+", g_libGTASA)
$3115 = operator.int(0x413DAD, "+", g_libGTASA)
$3116 = operator.int(0x5AB799, "+", g_libGTASA)
$3117 = operator.int(0x5CBBAD, "+", g_libGTASA)
$3118 = operator.int(0x5C24C5, "+", g_libGTASA)

// lightstored
$3119 = operator.int(0xA46E70, "+", g_libGTASA)
$3120 = operator.int(0x676FEC, "+", g_libGTASA)

//delta
$3121 = operator.int(0x26C1D1, "+", g_libGTASA)
$3122 = operator.int(0x26C1D1, "+", g_libGTASA)

//check matrix
$3123 = operator.int(0x27945D, "+", g_libGTASA)

// gameTime
$3124 = operator.int(0x953144, "+", g_libGTASA)

// interpolate
$3125 = operator.int(0xA7D140, "+", g_libGTASA)
            
// old
$3126 = operator.int(0xA7D134, "+", g_libGTASA)

// new            
$3127 = operator.int(0xA7D136, "+", g_libGTASA)

// rain value
$3128 = operator.int(0xA7D164, "+", g_libGTASA)

// sky color Top
$3129 = operator.int(0x966570, "+", g_libGTASA)

// sky color Bottom
$3130 = operator.int(0x966576, "+", g_libGTASA)

//camera
$3135 = operator.int(0x1D849D, "+", g_libGTASA)
$3136 = operator.int(0x2791AD, "+", g_libGTASA)
$3137 = operator.int(0x3DE861, "+", g_libGTASA)
$3138 = operator.int(0x3DE785, "+", g_libGTASA)

//Raster
$3139 = operator.int(0x6B31FC, "+", g_libGTASA)

// shader
$3140 = operator.int(0x6B4580, "+", g_libGTASA)

// shadow
$3141 = operator.int(0x966594, "+", g_libGTASA)

// renderwidth
$3142 = operator.int(0x6B407C, "+", g_libGTASA)

//renderHeight
$3143 = operator.int(0x6B4080, "+", g_libGTASA)

// emu
$3144 = operator.int(0x6B4174, "+", g_libGTASA)

// flushSinceSwap
$3145 = operator.int(0x6B4084, "+", g_libGTASA)

// operatorNew
0@ = operator.int(0x673158, "+", g_libGTASA) //operator new
ARM._(LDR $3146, 0@);

$3147 = operator.int(0x1CFF8D, "+", g_libGTASA) //GetES2TargetFormat
$3148 = operator.int(0x6608DC, "+", g_libGTASA) // Func Pointer

// funcShader
$3149 = operator.int(0x6608A0, "+", g_libGTASA)

// uniform matrix
$3151 = operator.int(0x27740D, "+", g_libGTASA)

// uniform vector
$3152 = operator.int(0x277431, "+", g_libGTASA)

// uniform bone
$3150 = operator.int(0x277449, "+", g_libGTASA)

// percent resolution
$3153 = operator.int(0x6E0424, "+", g_libGTASA)

// backTarget
$3154 = operator.int(0x6B4058, "+", g_libGTASA)

// createTarget
$3155 = operator.int(0x1D0711, "+", g_libGTASA)

// hackTarget
$3156 = operator.int(0x6B405C, "+", g_libGTASA)

// destroy Raster
$3157 = operator.int(0x1AE979, "+", g_libGTASA)

// destroy Target
$3158 = operator.int(0x1D0B31, "+", g_libGTASA)

// touch down
$3159 = operator.int(0x2B0AA9, "+", g_libGTASA)

// touch position
$3160 = operator.int(0x2B0AC5, "+", g_libGTASA)

// Delta
$3161 = operator.int(0x6F4360, "+", g_libGTASA)

// draw mode
$3162 = operator.int(0x1BCBD9, "+", g_libGTASA)

// triangle strip
$3163 = operator.int(0x211675, "+", g_libGTASA)
                    
// triangles strip
$3164 = operator.int(0x21179D, "+", g_libGTASA)

// vertex update
$3165 = operator.int(0x1D2549, "+", g_libGTASA)

// index update
$3166 = operator.int(0x1D2BC1, "+", g_libGTASA)

// render effects
$3167 = operator.int(0x363DF1, "+", g_libGTASA)
$3168 = operator.int(0x820520, "+", g_libGTASA)
$3169 = operator.int(0x952880, "+", g_libGTASA)
$3170 = operator.int(0x951FA8, "+", g_libGTASA)
            
// render specialfx
$3171 = operator.int(0x5C0B15, "+", g_libGTASA)

// num light
$3172 = operator.int(0xA46E70, "+", g_libGTASA)

// renderQueue
$3173 = operator.int(0x6BCC54, "+", g_libGTASA)

// rqInitialise
$3174 = operator.int(0x1D2461, "+", g_libGTASA)

// fps
$3175 = operator.int(0x9FC908, "+", g_libGTASA)

// texture render
$3176 = operator.int(0x1E9748, "+", g_libGTASA)
$3177 = operator.int(0x1E9744, "+", g_libGTASA)
$3178 = operator.int(0x1E973C, "+", g_libGTASA)

// reinit streaming
$3179 = operator.int(0x2CF8F5, "+", g_libGTASA)
return  


/*void*/:patchSystem{}
if gameVersion == 108
then
    // fix boat
    ARM.memprotect2(0x4F7150, 0xE7BA, 2)
                
    //setLimitLight()
    ARM.memprotect2(0x3B1DA8, 0x4770, 4)
    ARM.memprotect2(0x3B1E08, 0x4770, 4)
    ARM.memprotect2(0x3B1F38, 0x4770, 4)
    ARM.memprotect2(0x3B2000, 0x4770, 4)
    ARM.memprotect2(0x3B20C8, 0x4770, 4)
    ARM.memprotect2(0x3B1DEC, 0x4770, 4)
    ARM.memprotect2(0x3B1F1C, 0x4770, 4)
    ARM.memprotect2(0x3B1FE8, 0x4770, 4)
    ARM.memprotect2(0x3B20B0, 0x4770, 4)
    ARM.memprotect2(0x3B2178, 0x4770, 4)
    
    ARM.memprotect2(0x519C04, NOPH, 4) // REMOVE LIGHT
    ARM.memprotect2(0x518EC4, 0x4770, 2) // lightBeam   
    
    // aniso
    ARM.memprotect2(0x1A681A, 0x4283F04F, 4)
    ARM.memprotect2(0x1A6A7C, 0x4283F04F, 4)
    ARM.memprotect2(0x1A6A94, 0x4283F04F, 4)


    call.2r( @longPatch, 0x24086C, @frustum) // camera frustum fix    
             
    // fix clip
    //ARM.memprotect2(0x38AF4C, 0xE004, 2)
    //ARM.memprotect2(0x38AC46, NOPH, 4)
    //ARM.memprotect2(0x38B522, NOPH, 4)

    //shadow pole disabled
    ARM.memprotect2(0x392EC4 value NOPH size 4);
    ARM.memprotect2(0x393168 value NOPH size 4);
    ARM.memprotect2(0x393190 value NOPH size 4);
    ARM.memprotect2(0x392E0C value NOPH size 4);
    ARM.memprotect2(0x39311E value NOPH size 4);
    ARM.memprotect2(0x392EF2 value NOPH size 4);


    // water                            
    // Patch water render
    ARM.memprotect2(0x525C7C, NOPH, 4)
    ARM.memprotect2(0x525C84, NOPH, 4)
    ARM.memprotect2(0x525C8C, NOPH, 4)
    ARM.memprotect2(0x525C94, NOPH, 4)
    ARM.memprotect2(0x525C9C, NOPH, 4)
    ARM.memprotect2(0x525E56, NOPH, 4)
    ARM.memprotect2(0x525E5E, NOPH, 4)
    ARM.memprotect2(0x5260B2, NOPH, 4)
    ARM.memprotect2(0x5260BA, NOPH, 4)
    ARM.memprotect2(0x5260C2, NOPH, 4)
    ARM.memprotect2(0x525C52, NOPH, 4)
    
    ///CWaterLevel::RenderAndEmptyRenderBuffer
    ARM.memprotect2(0x5263EE, NOPH, 4) // render boat wakes
    
    // climb to car
    //ARM.memprotect2(0x4B50DE, 0xE01F, 2)
    //ARM.memprotect2(0x4B52A8, NOPH, 4)
    
    ARM.memprotect2(0x39894E, NOPH, 4) //sun and moon
 
    //glOrtho
    call.2r( @longPatch, 0x2408E4, @newOrtho)    
    emu_glOrtho = operator.int(0x2408E5, "+", g_libGTASA)
        
    // TransMAP{
    ARM.memprotect2(0x26ADA0, NOPH, 4)
    ARM.memprotect2(0x26ADEE, NOPH, 4)
    ARM.memprotect2(0x26AE48, NOPH, 4)
    ARM.memprotect2(0x26AE90, NOPH, 4)
    ARM.memprotect2(0x26AECC, NOPH, 4)
    ARM.memprotect2(0x26AF14, NOPH, 4)
    ARM.memprotect2(0x26AB2A, NOPH, 4)
    ARM.memprotect2(0x26AC24, NOPH, 4)
    ARM.memprotect2(0x26AC4A, NOPH, 4)
    ARM.memprotect2(0x26AC68, NOPH, 4)
    ARM.memprotect2(0x26AC8A, NOPH, 4)
    ARM.memprotect2(0x26ACA8, NOPH, 4)
    ARM.memprotect2(0x26ACC6, NOPH, 4)
    ARM.memprotect2(0x26ACE8, NOPH, 4)
    ARM.memprotect2(0x26AD06, NOPH, 4)
    ARM.memprotect2(0x26AD24, NOPH, 4)
    ARM.memprotect2(0x3DE754, 0, 1)
    
    ARM.memprotect2(0x26ADF2, 5, 1)
    ARM.memprotect2(0x26ADFC, 6, 1)
    
    ARM.memprotect2(0x25B202, NOPH, 4)
    ARM.memprotect2(0x25B694, NOPH, 4)
    ARM.memprotect2(0x25B65E, NOPH, 4)
    
    ARM.memprotect2(0x26306C, 0xB976F7FF, 4)    
    
    ARM.memprotect2(0x25B51E, NOP, 2)
    ARM.memprotect2(0x25B4A4, NOP, 2)
    //}
    
    // {tweak
    // tweak water
    ARM.memprotect2(0x524642, NOPH, 4)
    ARM.memprotect2(0x5247A4, 0x4770, 2)

    ARM.memprotect2(0x39B0A0 value NOPH size 4) // disable TemporaryFPSVisualization
    ARM.memprotect2(0x3B14BE value 0x4770 size 2) // disable bad shadow
  
    ARM.memprotect2(0x3DDF30 value 0x4770 size 2); // map texture destroy
    
    //Fps Limiter Mod
    ARM.memprotect2(0x56C186 value 0xE035 size 2);
    ARM.memprotect2(0x56C1F6 value NOP size 2);    
    ARM.memprotect2(0x56C1FA value NOP size 2);    
        
    //Remove old Shadow
    ARM.memprotect2(0x438298 value NOPH size 4); //Static Shadow PED
    ARM.memprotect2(0x546688 value NOPH size 4); //Static Shadow VEH
    ARM.memprotect2(0x3FEDF6 value NOPH size 4); //Static Shadow OBJ
    
    //ARM.memprotect2(0x54F4A8 value NOPH size 4); // GetZVal
   else
    if gameVersion == 200
    then
        // disable pump
        ARM.memprotect2(0x3F69B0, NOPH, 4)
        ARM.memprotect2(0x42E532, NOPH, 4)
        
        // fix boat
        ARM.memprotect2(0x56B720, 0xE24D, 2)
                    
        //setLimitLight()
        ARM.memprotect2(0x41048C, 0x4770, 4)
        ARM.memprotect2(0x4104E8, 0x4770, 4)
        ARM.memprotect2(0x4105F4, 0x4770, 4)
        ARM.memprotect2(0x4106C0, 0x4770, 4)
        ARM.memprotect2(0x41078C, 0x4770, 4)
        
        ARM.memprotect2(0x4104CC, 0x4770, 4)
        ARM.memprotect2(0x4105C4, 0x4770, 4)
        ARM.memprotect2(0x4106A4, 0x4770, 4)
        ARM.memprotect2(0x410770, 0x4770, 4)
        ARM.memprotect2(0x41083C, 0x4770, 4)
        
        ARM.memprotect2(0x59163A, NOPH, 4) // REMOVE LIGHT
        ARM.memprotect2(0x5906D0, 0x4770, 2) // lightBeam   
        
        // aniso
        ARM.memprotect2(0x1D0358, 0x4283F04F, 4)
        ARM.memprotect2(0x1D04DC, 0x4283F04F, 4)
        ARM.memprotect2(0x1D04C8, 0x4283F04F, 4)
        call.2r( @longPatch, 0x2791FC, @frustum200) // camera frustum fix    
                 
        //shadow pole disabled
        ARM.memprotect2(0x3EC4E2 value NOPH size 4);
        
        // water                            
        // Patch water render
        ARM.memprotect2(0x59717E, NOPH, 4)
        ARM.memprotect2(0x597186, NOPH, 4)
        ARM.memprotect2(0x59718E, NOPH, 4)
        ARM.memprotect2(0x597196, NOPH, 4)
        ARM.memprotect2(0x59719E, NOPH, 4)
        ARM.memprotect2(0x597422, NOPH, 4)
        ARM.memprotect2(0x59742A, NOPH, 4)
        ARM.memprotect2(0x597706, NOPH, 4)
        ARM.memprotect2(0x59770E, NOPH, 4)
        ARM.memprotect2(0x597716, NOPH, 4)
        
        ///CWaterLevel::RenderAndEmptyRenderBuffer
        ARM.memprotect2(0x597A52, NOPH, 4) // render boat wakes        
        
    
        ARM.memprotect2(0x3F426A, NOPH, 4) //sun and moon
        
        //glOrtho
        call.2r( @longPatch, 0x27926A, @newOrtho200)
        emu_glOrtho = operator.int(0x27926B, "+", g_libGTASA)
            
        // {tweak
        // tweak water
        ARM.memprotect2(0x599BA6, NOPH, 4)
        ARM.memprotect2(0x59813A, 0x4770, 2)    
        
        ARM.memprotect2(0x3F6558 value NOPH size 4) // disable TemporaryFPSVisualization
        ARM.memprotect2(0x3F6C2C value NOPH size 4) // disable TemporaryFPSVisualization
        ARM.memprotect2(0x40FB02 value 0x4770 size 2) // disable bad shadow
      
        ARM.memprotect2(0x443090 value 0x4770 size 2); // map texture destroy

        //Fps Limiter Mod
        ARM.memprotect2(0x5E4972 value 0xE011 size 2);
        ARM.memprotect2(0x5E49A4 value NOP size 2);    
        
        //Remove old Shadow
        ARM.memprotect2(0x465DAC value NOPH size 4); //Static Shadow PED
        ARM.memprotect2(0x4A5D48 value NOPH size 4); //Static Shadow VEH
        ARM.memprotect2(0x5B97F6 value NOPH size 4); //Static Shadow OBJ
       else 
        if gameVersion == 210
        then
            // disable pump
            ARM.memprotect2(0x3F6A00, NOPH, 4)
            ARM.memprotect2(0x42E582, NOPH, 4)
            
            // fix boat
            ARM.memprotect2(0x56B790, 0xE24D, 2)
                        
            //setLimitLight()
            ARM.memprotect2(0x4104DC, 0x4770, 4)
            ARM.memprotect2(0x410538, 0x4770, 4)
            ARM.memprotect2(0x410644, 0x4770, 4)
            ARM.memprotect2(0x410710, 0x4770, 4)
            ARM.memprotect2(0x4107DC, 0x4770, 4)
            
            ARM.memprotect2(0x41051C, 0x4770, 4)
            ARM.memprotect2(0x410614, 0x4770, 4)
            ARM.memprotect2(0x4106F4, 0x4770, 4)
            ARM.memprotect2(0x4107C0, 0x4770, 4)
            ARM.memprotect2(0x41088C, 0x4770, 4)
            
            ARM.memprotect2(0x5916AA, NOPH, 4) // REMOVE LIGHT
            ARM.memprotect2(0x590740, 0x4770, 2) // lightBeam   
            
            // aniso
            ARM.memprotect2(0x1D02D8, 0x4283F04F, 4)
            ARM.memprotect2(0x1D0448, 0x4283F04F, 4)
            ARM.memprotect2(0x1D045C, 0x4283F04F, 4)
            call.2r( @longPatch, 0x2791AC, @frustum210) // camera frustum fix    
                     
            //shadow pole disabled
            ARM.memprotect2(0x3EC532 value NOPH size 4);
            
            // water                            
            // Patch water render
            ARM.memprotect2(0x5971EE, NOPH, 4)
            ARM.memprotect2(0x5971F6, NOPH, 4)
            ARM.memprotect2(0x5971FE, NOPH, 4)
            ARM.memprotect2(0x597206, NOPH, 4)
            ARM.memprotect2(0x59720E, NOPH, 4)
            ARM.memprotect2(0x597492, NOPH, 4)
            ARM.memprotect2(0x59749A, NOPH, 4)
            ARM.memprotect2(0x597776, NOPH, 4)
            ARM.memprotect2(0x59777E, NOPH, 4)
            ARM.memprotect2(0x597786, NOPH, 4)
            
            ///CWaterLevel::RenderAndEmptyRenderBuffer
            ARM.memprotect2(0x597AC2, NOPH, 4) // render boat wakes        
            
        
            ARM.memprotect2(0x3F42BA, NOPH, 4) //sun and moon
            
            //glOrtho
            call.2r( @longPatch, 0x27921A, @newOrtho210)
            emu_glOrtho = operator.int(0x27921B, "+", g_libGTASA)
                
            // {tweak
            // tweak water
            ARM.memprotect2(0x599C16, NOPH, 4)
            ARM.memprotect2(0x5981AA, 0x4770, 2)    
            
            ARM.memprotect2(0x3F65A8 value NOPH size 4) // disable TemporaryFPSVisualization
            ARM.memprotect2(0x3F6C7C value NOPH size 4) // disable TemporaryFPSVisualization
            
            ARM.memprotect2(0x40FB52 value 0x4770 size 2) // disable bad shadow
          
            ARM.memprotect2(0x4430E0 value 0x4770 size 2); // map texture destroy
    
            //Fps Limiter Mod
            ARM.memprotect2(0x5E49C2 value 0xE011 size 2);
            ARM.memprotect2(0x5E49F4, NOP, 2)
            
            //Remove old Shadow
            ARM.memprotect2(0x465E10 value NOPH size 4); //Static Shadow PED
            ARM.memprotect2(0x4A5DB8 value NOPH size 4); //Static Shadow VEH
            ARM.memprotect2(0x5B9866 value NOPH size 4); //Static Shadow OBJ
        end
    end 
end     
return
                            
:PointerInit
if gameVersion == 108
then
    $3216 = 1988
    $3217 = 2600
    $3218 = 416
    $3219 = 34
    $3220 = 0x4A0
    $3221 = 0x590
    $3222 = 0x134
    $3223 = 340
   else 
    $3216 = 1996
    $3217 = 2604
    $3218 = 420
    $3219 = 38
    $3220 = 0x4A4
    $3221 = 0x594
    $3222 = 0x138
    $3223 = 344
end
return

:CSprites
call.1r( @logsetcurrent, @applyup)
0@ = script.getOffset(@applyup)
script.call(CLoadTextureFromFile)
0085: $12008 = 0@

call.1r( @logsetcurrent, @applydown)
0@ = script.getOffset(@applydown)
script.call(CLoadTextureFromFile)
0085: $12009 = 0@

call.1r( @logsetcurrent, @closeup)
0@ = script.getOffset(@closeup)
script.call(CLoadTextureFromFile)
0085: $12010 = 0@

call.1r( @logsetcurrent, @closedown)
0@ = script.getOffset(@closedown)
script.call(CLoadTextureFromFile)
0085: $12011 = 0@

call.1r( @logsetcurrent, @checkbox1)
0@ = script.getOffset(@checkbox1)
script.call(CLoadTextureFromFile)
0085: $12012 = 0@

call.1r( @logsetcurrent, @checkbox2)
0@ = script.getOffset(@checkbox2)
script.call(CLoadTextureFromFile)
0085: $12013 = 0@

call.1r( @logsetcurrent, @inc1)
0@ = script.getOffset(@inc1)
script.call(CLoadTextureFromFile)
0085: $12014 = 0@

call.1r( @logsetcurrent, @inc2)
0@ = script.getOffset(@inc2)
script.call(CLoadTextureFromFile)
0085: $12015 = 0@

call.1r( @logsetcurrent, @dec1)
0@ = script.getOffset(@dec1)
script.call(CLoadTextureFromFile)
0085: $12016 = 0@

call.1r( @logsetcurrent, @dec2)
0@ = script.getOffset(@dec2)
script.call(CLoadTextureFromFile)
0085: $12017 = 0@
return

:CValueConfiguration
call.1r( @ReadFileConfiguration, $10317)
008A: CFileConfig = RET

0@ = script.getOffset(@C_Advanced)
call.1r( @ReadFileConfiguration, 0@)
008A: CConfig_Advanced = RET

DATATYPE = 0 //$2
0084: $4 = CFileConfig
DATATYPE   = int
readline()
if 0@ == 0
then
    0@ = 0
    script.return()
end
DATATYPE   = int
readline()
008A: $6 = 0@ // (int)
   
:FPSLimiterLimit
DATATYPE   = int
readline()
008A: $12 = 0@ // (int)

DATATYPE   = int
readline()
008A: $13 = 0@ // (int)
   
:DistScale
DATATYPE   = float 
readline()
0088: $14 = 0@ // (float)
DATATYPE   = float 
readline()
0088: $15 = 0@ // (float)
DATATYPE   = float 
readline()
0088: $16 = 0@ // (float)
DATATYPE   = float 
readline()
0088: $17 = 0@ // (float)
   
:_time
DATATYPE   = int
readline()
008A: $22 = 0@ // (int)
   
:DrawDistance                               
DATATYPE   = int
readline()
008A: $35 = 0@ // (int)
DATATYPE   = float 
readline()
0088: $36 = 0@ // (float)
DATATYPE   = float 
readline()
0088: $37 = 0@ // (float)
DATATYPE   = float 
readline()
0088: $38 = 0@ // (float)
   
:HUD
DATATYPE   = float 
readline()
0088: $146 = 0@ // (float)
DATATYPE   = int
readline()
008A: $147 = 0@ // (int)
DATATYPE   = int
readline()
008A: $386 = 0@ // (int)
DATATYPE   = int
readline()
008A: $389 = 0@ // (int)

:TexRender
DATATYPE   = float 
readline()
0088: $126 = 0@ // (float)
DATATYPE   = int
readline()
008A: $4015 = 0@ // (int)
DATATYPE   = float 
readline()
0088: $4016 = 0@ // (float)

   

//Advanced
0084: $4 = CConfig_Advanced
// godray
DATATYPE   = int
readline()
0085: menu_godRay_isGodRayEnable = 0@
DATATYPE   = float
readline()
0085: menu_godRay_exposure = 0@
DATATYPE   = float
readline()
0085: menu_godRay_decay = 0@
DATATYPE   = float
readline()
0085: menu_godRay_density = 0@
DATATYPE   = float
readline()
0085: menu_godRay_weight = 0@
DATATYPE   = int
readline()
0085: menu_godRay_samples = 0@
DATATYPE   = float
readline()
0085: menu_godRay_gradien = 0@
DATATYPE   = int
readline()
0085: menu_godRay_pixel = 0@
//dof
DATATYPE   = int
readline()
0085: menu_DOF_isDOFEnable = 0@
DATATYPE   = float
readline()
0085: menu_DOF_nearclip = 0@
DATATYPE   = float
readline()
0085: menu_DOF_farclip = 0@
DATATYPE   = float
readline()
0085: menu_DOF_intensity = 0@
DATATYPE   = int
readline()
0085: menu_DOF_pixel = 0@

//Bloon
DATATYPE   = int
readline()
0085: menu_bloom_isEnable = 0@
DATATYPE   = float
readline()
0085: menu_bloom_Selection = 0@
DATATYPE   = int
readline()
0085: menu_bloom_sample = 0@
DATATYPE   = float
readline()
0085: menu_bloom_intensity = 0@
DATATYPE   = int
readline()
0085: menu_bloom_pixel = 0@

// Shadow
// cascaded1
DATATYPE   = int
readline()
0085: menu_shadow_isEnable = 0@
DATATYPE   = int
readline()
0085: menu_shadowCascaded1_isEnable = 0@
DATATYPE   = int
readline()
0085: menu_shadowCascaded1_Resolution = 0@
DATATYPE   = float
readline()
0085: menu_shadowCascaded1_Near = 0@
DATATYPE   = float
readline()
0085: menu_shadowCascaded1_Far = 0@
// cascaded2
DATATYPE   = int
readline()
0085: menu_shadowCascaded2_isEnable = 0@
DATATYPE   = int
readline()
0085: menu_shadowCascaded2_Resolution = 0@
DATATYPE   = float
readline()
0085: menu_shadowCascaded2_Near = 0@
DATATYPE   = float
readline()
0085: menu_shadowCascaded2_Far = 0@
// cascaded3
DATATYPE   = int
readline()
0085: menu_shadowCascaded3_isEnable = 0@
DATATYPE   = int
readline()
0085: menu_shadowCascaded3_Resolution = 0@
DATATYPE   = float
readline()
0085: menu_shadowCascaded3_Near = 0@
DATATYPE   = float
readline()
0085: menu_shadowCascaded3_Far = 0@
// mult
DATATYPE   = float
readline()
0085: menu_shadowCascaded_Mult = 0@

// free
fastCall.1r( free, CFileConfig)
fastCall.1r( free, CConfig_Advanced)
return

:readline
if DATATYPE == float
then
    008B: 4@ = $10310
   else
    if or 
    DATATYPE == bool
    DATATYPE == int
    then
        008B: 4@ = $10309
       else
        if DATATYPE == string
        then
            008B: 4@ = $10306
           else 
            if DATATYPE == string1
            then
                008B: 4@ = $10307
            end
        end
    end
end   

ReadLine_()
GetValueINI()
return                  

:ReadLine_
while true
    1301: LDRB v1 $4
    while true
        if or 
        v1 == 0x20
        v1 == 0x00
        then
            $4++
            1301: LDRB v1 $4
           else
            break 
        end
    end

    v10 = script.getOffset( @CommentLine )
    1301: LDRB v1 $4
    repeat
        1301: LDRB v2 v10
        if 003A: v2 == v1
        then
            if v2 == 0x0A
            then
                $4++
                break
               else
                repeat
                    1301: LDRB v1 $4
                    $4++
                until v1 == 0x0A
                break 
            end    
        end
        v10++    
    until v2 == 0
    
    if v2 == 0
    then
        return
    end
end
return

:GetValueINI
fastCall.3r(sscanf, $4, 4@, 10@)

0085: 6@ = 10@
1301: LDR 0@ 6@
repeat
    1301: LDRB 1@ $4
    $4++
until 1@ == 0x0A
DATATYPE = 0
return               

:free
if 0@ <> 0
then
    fastcall.1r(free, 0@)
end
return

/* String Manager */
:ReloadShader
hex
    "Reload Shader" 00
end

:Objs_type
hex
    "%s %i %f" 00
end

:Objs_f
hex
    "SAAdox/data/obj.dat" 00
end

:ModeW
hex
    "w" 00
end

:logOutput
hex
    "SAAdox/logOutput.log" 00
end
    
:FGL_NORMALLOAD
hex
    "SAAdox/data/script/~~CVertex~~Load.x" 00
end

:FGL_NORMAL
hex
    "SAAdox/data/script/~~CVertex~~Normal.x" 00
end

:Near
hex
    "Near" 00
end

:Far
hex
    "Far" 00
end

:DOF
hex
    "Depth Of Field" 00
end

:Bloom
hex
    "Bloom" 00
end

:Enable
hex
    "Enable" 00
end

:GodRay
hex
    "GodRay" 00
end

:exposure
hex
    "exposure" 00
end

:decay
hex
    "decay" 00
end

:density
hex
    "density" 00
end

:weight
hex
    "weight" 00
end

:selection
hex
    "selection" 00
end

:intensity
hex
    "intensity" 00
end

:samples
hex
    "samples" 00
end

:gradien
hex
    "gradien" 00
end

:pixel
hex
    "pixel" 00
end

:logMemError
hex
    "Memory Overload!!" 00
end

:CommentLine
hex
    "#[]{};/\.,?" 0A 00
end
:inc1
hex
    "SAAdox/Tx/menu/increase1.png" 00
end

:inc2
hex
    "SAAdox/Tx/menu/increase2.png" 00
end

:dec1
hex
    "SAAdox/Tx/menu/decrease1.png" 00
end

:dec2
hex
    "SAAdox/Tx/menu/decrease2.png" 00
end

:checkbox1
hex
    "SAAdox/Tx/menu/checkbox1.png" 00
end

:checkbox2
hex
    "SAAdox/Tx/menu/checkbox2.png" 00
end

:applyup
hex
    "SAAdox/Tx/menu/apply_up.png" 00
end

:applydown
hex
    "SAAdox/Tx/menu/apply_down.png" 00
end

:closedown
hex
    "SAAdox/Tx/menu/close_down.png" 00
end

:closeup
hex
    "SAAdox/Tx/menu/close_up.png" 00
end

:C_Advanced
hex
    "SAAdox/Advanced.ini" 00
end

:F_ProcEntity
hex
    "SAAdox/data/script/~~CProcess~~Entity.x" 00
end

:F_Render2D
hex
    "SAAdox/data/script/~~CRender~~2dStuff.x" 00
end

:F_CRender
hex
    "SAAdox/data/script/~~CRender~~Render.x" 00
end

:F_CUpdates
hex
    "SAAdox/data/script/~~CProcess~~Updates.x" 00
end

:F_CInitialise
hex
    "SAAdox/data/script/~~CScripts~~Initialise.x" 00
end

:F_CLoadPNGSprites
hex
    "SAAdox/data/script/~~CSprites~~Loadfromfile.x" 00
end

:F_CProcPed
hex
    "SAAdox/data/script/~~CProcess~~Ped.x" 00 00
end

:F_CProcObj
hex
    "SAAdox/data/script/~~CProcess~~Object.x" 00 00
end

:F_CProcVeh
hex
    "SAAdox/data/script/~~CProcess~~Vehicle.x" 00 00
end

:F_COpenAlWVF
hex
    "SAAdox/data/script/~~OpenAL~~loadWaveFile.x" 00 00
end

:F_OpenGLrqInit
hex
    "SAAdox/data/script/~~OpenGL~~rqInit.x" 00 00
end
:ModeS1
hex
    "r" 00
end
:ARMLabelFiles
hex
    "SAAdox/data/script/include/ARMLabel.bin" 00
end
:ARMFiles
hex
    "SAAdox/data/script/include/arm64.bin" 00
end
:stringFileHash
hex
    "SAAdox/data/script/include/string.hash" 00
end
:SFunction
hex
    "SAAdox/data/script/include/function.bin" 00
end

:initString_LOG
hex
    "initString Load Success" 0A 00
end

:ARMFunction_LOG
hex
    "ARMFunction Load Success" 0A 00
end

:CLoadScripts_LOG
hex
    "CLoadScripts Load Success" 0A 00
end

:rq_isReload
hex
    "rq_isReload" 0A 00
end

:init_RQ_LOG
hex
    "init_RQ Load Success" 0A 00
end

:patchSystem_LOG
hex
    "patchSystem Load Success" 0A 00
end


:ScriptInit_LOG
hex
    "ScriptInit Load Success" 0A 00
end

:CValueConfiguration_LOG
hex
    "CValueConfiguration Load Success" 0A 00
end

:_HUD_LOG
hex
    "_HUD Load Success" 0A 00
end

:PointerInit_LOG
hex
    "PointerInit Load Success" 0A 00
end

:getWindowSize_LOG
hex
    "getWindowSize Load Success" 0A 00
end

:init_rqGLCommand_LOG
hex
    "init_rqGLCommand Load Success" 0A 00
end

:init_GL_PUSH_LOG
hex
    "init_GL_PUSH Load Success" 0A 00
end

:initResolution_LOG
hex
    "initResolution Load Success" 0A 00
end

:flushGLCommand_LOG
hex
    "flushGLCommand Load Success" 0A 00
end

:init_RwRaster_LOG
hex
    "init_RwRaster Load Success" 0A 00
end

:init_glTextureBuffer_LOG
hex
    "init_glTextureBuffer Load Success" 0A 00
end

:CSprites_LOG
hex
    "CSprites Load Success" 0A 00
end

:MemoryAddres_Setting_LOG
hex
    "MemoryAddres_Setting Load Success" 0A 00
end

:menu_LOG
hex
    "menu Load Success" 0A 00
end

:rqFlush_LOG
hex
    "rqFlush Load Success" 0A 00
end

:ALLDONE_LOG
hex
    "~ALL-DONE~" 0A 00
end

:Hero
hex
    "ANDI'S, IKHWAN, DEDEN"
end

:glFunction
hex
    "glDrawArrays" 00                           
    "glBindBuffer" 00                           
    "glFramebufferTexture2D" 00                 
    "glFrontFace" 00                            
    "glVertexAttrib4fv" 00                      
    "glEnableVertexAttribArray" 00              
    "glDeleteFramebuffers" 00                   
    "glClear" 00                                
    "glDisable" 00                              
    "glViewport" 00                             
    "glGetShaderInfoLog" 00                     
    "glTexImage2D" 00                           
    "glFramebufferRenderbuffer" 00              
    "glDeleteProgram" 00                        
    "glBindRenderbuffer" 00                     
    "glReadPixels" 00                           
    "glGenBuffers" 00                           
    "glGetUniformLocation" 00                   
    "glBindFramebuffer" 00                      
    "glGetError" 00                             
    "glCheckFramebufferStatus" 00               
    "glActiveTexture" 00                        
    "glGetProgramInfoLog" 00                    
    "glDepthMask" 00                            
    "glTexParameterf" 00                        
    "glGetString" 00                            
    "glGetProgramiv" 00                         
    "glDepthFunc" 00                            
    "glBlendFunc" 00                            
    "glCompileShader" 00                        
    "glClearDepthf" 00                          
    "glScissor" 00                              
    "glCreateShader" 00                         
    "glEnable" 00                               
    "glGetIntegerv" 00                          
    "glHint" 00                                 
    "glDrawElements" 00                         
    "glDeleteShader" 00                         
    "glBlendFuncSeparate" 00                    
    "glGenRenderbuffers" 00                     
    "glGetAttribLocation" 00                    
    "glBindTexture" 00                          
    "glBufferData" 00                           
    "glUniform1fv" 00                           
    "glUniform2fv" 00                           
    "glCullFace" 00                             
    "glUseProgram" 00                           
    "glDeleteTextures" 00                       
    "glTexParameteri" 00                        
    "glGenTextures" 00                          
    "glUniform3fv" 00                           
    "glUniform4fv" 00                           
    "glUniformMatrix4fv" 00                     
    "glUniform1i" 00                            
    "glClearColor" 00                           
    "glUniformMatrix3fv" 00                     
    "glDeleteRenderbuffers" 00                  
    "glRenderbufferStorage" 00                  
    "glPolygonOffset" 00                        
    "glAttachShader" 00                         
    "glCreateProgram" 00                        
    "glVertexAttribPointer" 00                  
    "glDeleteBuffers" 00                        
    "glDisableVertexAttribArray" 00             
    "glBindAttribLocation" 00                   
    "glCompressedTexImage2D" 00                 
    "glClearStencil" 00                         
    "glGetShaderiv" 00                          
    "glLinkProgram" 00                          
    "glShaderSource" 00                         
    "glGenFramebuffers" 00                      
    "glTexParameterfv" 00
    "glDrawBuffers" 00
    "glReadBuffer" 00
    "glColorMask" 00
    "glBegin" 00
    "glVertexAttrib2f" 00
    "glEnd" 00
    "glGetBufferParameteriv" 00
    "glGetBufferPointerv" 00
    "glCopyBufferSubData" 00
    "glVertexAttrib3f" 00
    "glUniform1f" 00
    "glUniform2f" 00
    "glUniform3f" 00
    "glUniform4f" 00
    "glUniform2i" 00
    "glUniform3i" 00
    "glUniform4i" 00
    "glTexImage3D" 00
    "glFramebufferTexture3DOES" 00
    "glCopyTexImage2D" 00
    "glReadBuffer" 00
    "glMinSampleShadingOES" 00
    "glGenerateMipmap" 00
    "glBlitFramebuffer" 00

    "EOL" 00       
end

/* Assembly Manager */
:clrclod
hex
    B6 EE 00 0A 02 49 81 ED 00 0A C2 F1 9D BB
    "EARM"
end

:clrclod200
hex
    B6 EE 00 0A 02 49 81 ED 00 0A EA F1 C7 BA
    "EARM"
end
       
:clrclod210
hex
    B6 EE 00 0A 02 49 81 ED 00 0A EA F1 2F BB
    "EARM"
end

:DrawIndex
hex
    2D E9 F0 41 82 B0 25 4E 00 AF 25 4B 7E 44 F3 58
    1B 78 1B B1 08 37 BD 46 BD E8 F0 81 82 68 04 46
    0D 46 01 46 00 32 18 BF 01 22 FF F7 39 FF 20 46
    A8 F3 EC F8 D4 F8 08 80 B8 F1 00 0F 11 D0 63 6A
    FB B1 18 4B 28 46 F3 58 1D 68 FF F7 BD FB A2 68
    E3 6A 01 46 28 46 08 37 BD 46 BD E8 F0 41 14 F0
    9F BA 10 4B 28 46 F3 58 1D 68 FF F7 AD FB 42 46
    A3 69 08 37 01 46 28 46 BD 46 BD E8 F0 41 14 F0
    0D BB 08 4A 28 46 7B 60 B2 58 15 68 FF F7 9C FB
    A2 68 7B 68 01 46 28 46 DD E7 00 BF DC 86 43 00
    B8 12 00 00 9C 0B 00 00
    "EARM" 00
end

:DrawWithIndex
hex
    2D E9 F0 47 00 AF 21 4D 21 4C 7D 44 D7 F8 20 80
    2E 59 36 78 0E B1 BD E8 F0 87 06 46 92 46 01 22
    0C 46 99 46 FF F7 D2 FE 30 46 A8 F3 85 F8 F4 B1
    63 6A 83 B1 17 4B 50 46 EB 58 1D 68 FF F7 5A FB
    E3 6A 42 46 03 EB 49 03 01 46 28 46 BD 46 BD E8
    F0 47 14 F0 3B BA 0F 4B 50 46 EB 58 1C 68 FF F7
    49 FB 42 46 4F EA 49 03 01 46 20 46 EE E7 09 4B
    50 46 EB 58 1D 68 FF F7 3D FB 22 46 B3 69 01 46
    28 46 BD 46 BD E8 F0 47 14 F0 9E BA 0A 86 43 00
    B8 12 00 00 9C 0B 00 00
    "EARM"
end

:objcf
hex
    05 4A 06 4B 00 00 08 21 48 43 10 44 01 68 19 60
    41 68 59 60 70 47
    "EARM"
end

:istexAlpha
hex
    10 B5 09 4C 01 28 07 D1 4F F4 3C 60 CF F7 92 F9
    4F F0 7E 50 20 60 10 BD 4F F4 3C 60 CF F7 B6 FA
    4F F0 00 00 20 60 10 BD
    "EARM"
end

:istexAlpha200
hex
    10 B5 09 4C 01 28 07 D1 4F F4 3C 60 C7 F7 CA FD
    4F F0 7E 50 20 60 10 BD 4F F4 3C 60 C7 F7 E8 FE
    4F F0 00 00 20 60 10 BD
    "EARM"
end

:handleblend
hex
    10 B5 C2 F7 19 FD 05 48 05 49 00 68 00 28 01 D1
    08 60 10 BD 4F F0 7E 50 08 60 10 BD "EARM"
end

:normalinit
hex
    2D E9 F0 5F 95 B0 04 46 0D 46 16 46 1F 46 DD F8
    7C 80 4F F0 00 09 04 FB 09 F0 05 EB 00 01 06 FB
    09 F0 07 EB 00 02 10 46 22 46 9B F7 A5 E9 20 9A
    06 FB 09 F0 08 EB 00 03 1A 60 5A 60 9A 60 09 F1
    01 09 21 98 81 45 00 DA E5 E7 15 B0 BD E8 F0 9F
    "EARM" 
end

:normalgeneratedMod
hex
    2D E9 F0 5F 95 B0 04 46 0D 46 16 46 1F 46 4F F0
    00 08 4F F0 01 09 45 45 3B DD 04 EB 08 00 00 88
    06 FB 00 F0 00 EB 07 0A 04 EB 08 00 02 30 00 88
    06 FB 00 F0 00 EB 07 0B 04 EB 08 00 04 30 00 88
    06 FB 00 F0 00 EB 07 0C 68 46 59 46 52 46 60 F0
    6D F9 03 A8 61 46 52 46 60 F0 68 F9 06 A8 00 A9
    03 AA 0B F2 E1 FA 1F 9B 9A 44 9B 44 9C 44 50 46
    51 46 06 AA 60 F0 3C F9 58 46 59 46 06 AA 60 F0
    37 F9 60 46 61 46 06 AA 60 F0 32 F9 08 F1 06 08
    C1 E7 15 B0 BD E8 F0 9F
    "EARM"
end

:normalgeneratedMod200
hex
    2D E9 F0 5F 95 B0 04 46 0D 46 16 46 1F 46 4F F0
    00 08 4F F0 01 09 45 45 3B DD 04 EB 08 00 00 88
    06 FB 00 F0 00 EB 07 0A 04 EB 08 00 02 30 00 88
    06 FB 00 F0 00 EB 07 0B 04 EB 08 00 04 30 00 88
    06 FB 00 F0 00 EB 07 0C 68 46 59 46 52 46 65 F0
    42 FD 03 A8 61 46 52 46 65 F0 3D FD 06 A8 00 A9
    03 AA 3E F2 F9 FF 1F 9B 9A 44 9B 44 9C 44 50 46
    51 46 06 AA 65 F0 16 FD 58 46 59 46 06 AA 65 F0
    11 FD 60 46 61 46 06 AA 65 F0 0C FD 08 F1 06 08
    C1 E7 15 B0 BD E8 F0 9F
    "EARM"
end

:normalgeneratedMod210
hex
    2D E9 F0 5F 95 B0 04 46 0D 46 16 46 1F 46 4F F0
    00 08 4F F0 01 09 45 45 3B DD 04 EB 08 00 00 88
    06 FB 00 F0 00 EB 07 0A 04 EB 08 00 02 30 00 88
    06 FB 00 F0 00 EB 07 0B 04 EB 08 00 04 30 00 88
    06 FB 00 F0 00 EB 07 0C 68 46 59 46 52 46 65 F0
    5E FD 03 A8 61 46 52 46 65 F0 59 FD 06 A8 00 A9
    03 AA 3F F2 61 F8 1F 9B 9A 44 9B 44 9C 44 50 46
    51 46 06 AA 65 F0 32 FD 58 46 59 46 06 AA 65 F0
    2D FD 60 46 61 46 06 AA 65 F0 28 FD 08 F1 06 08 
    C1 E7 15 B0 BD E8 F0 9F
    "EARM"
end

:normalgeneratedOri
hex
    2D E9 F0 5F 95 B0 04 46 0D 46 16 46 1F 46 4F F0
    00 08 4F F0 01 09 45 45 4D DD 04 EB 08 00 04 38
    00 88 06 FB 00 F0 00 EB 07 0A 04 EB 08 00 02 38
    00 88 06 FB 00 F0 00 EB 07 0B 04 EB 08 00 00 88
    06 FB 00 F0 00 EB 07 0C B9 F1 00 0F 0C D1 68 46
    51 46 5A 46 60 F0 EC F9 03 A8 61 46 5A 46 60 F0
    E7 F9 4F F0 01 09 0B E0 68 46 59 46 52 46 60 F0
    DF F9 03 A8 61 46 52 46 60 F0 DA F9 4F F0 00 09
    06 A8 00 A9 03 AA 0B F2 51 FB 1F 9B 9A 44 9B 44
    9C 44 50 46 51 46 06 AA 60 F0 AC F9 58 46 59 46
    06 AA 60 F0 A7 F9 60 46 61 46 06 AA 60 F0 A2 F9
    08 F1 02 08 AF E7 15 B0 BD E8 F0 9F
    "EARM"
end

:normalgeneratedOri200
hex
    2D E9 F0 5F 95 B0 04 46 0D 46 16 46 1F 46 4F F0
    00 08 4F F0 01 09 45 45 4D DD 04 EB 08 00 04 38
    00 88 06 FB 00 F0 00 EB 07 0A 04 EB 08 00 02 38
    00 88 06 FB 00 F0 00 EB 07 0B 04 EB 08 00 00 88
    06 FB 00 F0 00 EB 07 0C B9 F1 00 0F 0C D1 68 46
    51 46 5A 46 65 F0 D3 FD 03 A8 61 46 5A 46 65 F0
    CE FD 4F F0 01 09 0B E0 68 46 59 46 52 46 65 F0
    C6 FD 03 A8 61 46 52 46 65 F0 C1 FD 4F F0 00 09
    06 A8 00 A9 03 AA 3F F2 7B F8 1F 9B 9A 44 9B 44
    9C 44 50 46 51 46 06 AA 65 F0 98 FD 58 46 59 46
    06 AA 65 F0 93 FD 60 46 61 46 06 AA 65 F0 8E FD
    08 F1 02 08 AF E7 15 B0 BD E8 F0 9F
    "EARM"
end

:normalgeneratedOri210
hex
    2D E9 F0 5F 95 B0 04 46 0D 46 16 46 1F 46 4F F0
    00 08 4F F0 01 09 45 45 4D DD 04 EB 08 00 04 38
    00 88 06 FB 00 F0 00 EB 07 0A 04 EB 08 00 02 38
    00 88 06 FB 00 F0 00 EB 07 0B 04 EB 08 00 00 88
    06 FB 00 F0 00 EB 07 0C B9 F1 00 0F 0C D1 68 46
    51 46 5A 46 65 F0 EF FD 03 A8 61 46 5A 46 65 F0
    EA FD 4F F0 01 09 0B E0 68 46 59 46 52 46 65 F0
    E2 FD 03 A8 61 46 52 46 65 F0 DD FD 4F F0 00 09
    06 A8 00 A9 03 AA 3F F2 E3 F8 1F 9B 9A 44 9B 44
    9C 44 50 46 51 46 06 AA 65 F0 B4 FD 58 46 59 46
    06 AA 65 F0 AF FD 60 46 61 46 06 AA 65 F0 AA FD
    08 F1 02 08 AF E7 15 B0 BD E8 F0 9F
    "EARM"
end

:sdrmod
hex
    70 B5 08 49 09 68 59 B1 04 68 05 6A 2E 68 30 1C
    30 B1 23 1C EA 68 A9 68 68 68 B0 47 10 35 F5 E7
    70 BD
    "EARM"
end

:texmatanim
hex
    01 29 05 D1 04 4B 4F F0 7E 52 1A 60 C6 F7 C6 B9
    01 4B 19 60 C6 F7 C2 B9
    "EARM"
end

:texmatanim200
hex
    01 29 05 D1 04 4B 4F F0 7E 52 1A 60 BA F7 3C BF
    01 4B 19 60 BA F7 38 BF
    "EARM"
end

:texmatanim210
hex
    01 29 05 D1 04 4B 4F F0 7E 52 1A 60 BA F7 3C BF
    01 4B 19 60 BA F7 38 BF
    "EARM"
end

:secondvertexcolor
hex
    00 28 07 D0 0D 4A 11 60 0D 4A 11 68 41 F4 80 11
    11 60 70 47 00 21 09 4A 11 60 09 4A 11 68 21 F4
    80 11 11 60 70 47
    "EARM"
end


:senvmap
hex
    01 49 08 60 70 47
    "EARM"
end


:renvmap
hex
    01 48 00 21 01 60 70 47
    "EARM"
end

:arm_WeaponRenderUpdate
hex
    00 20 70 47 70 B5 0C 4A 02 F1 0C 05 93 68 AB 42
    18 BF 02 F1 18 06 0E D0 99 68 58 68 48 60 59 68
    98 68 88 60 11 6A 99 60 11 6A 4B 60 5E 60 13 62
    93 68 AB 42 F0 D1 70 BD
    "EARM"
end

:arm_WeaponRenderUpdate200
hex
    00 20 70 47
    0D 49 88 68 0C 31 88 42 14 D0 0C 39 D0 E9 01 23
    5A 60 D0 E9 01 23 93 60 0A 6A 82 60 0A 6A 50 60
    01 F1 18 02 42 60 8A 68 08 62 01 F1 0C 00 82 42
    10 46 EB D1 70 47
    "EARM"
end

:sqrf
hex
    00 EE 10 0A B1 EE C0 0A 10 EE 10 0A 70 47
    "EARM" 
end

:blndms
hex
    10 B5 04 1C FF F7 D4 FF 20 1C 93 F3 F1 FD 10 BD
    "EARM"
end
                                    
:alph
hex 
    70 47
    70 B5 12 48 00 68 00 28 18 D0 0F 4C 25 68 04 24
    0C 48 00 68 D0 F8 74 12 27 22 0A 60 4C 60 8D 60
    0C 31 C0 F8 74 12 C0 F8 70 12 01 F5 80 63 D0 F8
    64 22 9A 42 01 D2 FF F7 3D F8 70 BD 00 24 00 25 
    E6 E7
    "EARM"
end

:rqst
hex
    03 68 19 68 5A 68 08 33 03 60 89 6A 01 48 40 F8
    22 10 70 47
    "EARM"
end

:rndr
hex
    70 B5 00 F1 1C 04 E6 69 00 2E 00 D0 00 E0 66 69
    B6 6D 07 2E 0D D1 2D E9 80 01 04 46 0D 46 16 46
    1F 46 CF F7 C3 FF 20 46 29 46 32 46 3B 46 BD E8
    80 01 14 69 01 22 A0 47 70 BD
    "EARM"
end    

:rndr200
hex
    70 B5 00 F1 1C 04 E6 69 00 2E 00 D0 00 E0 66 69
    B6 6D 07 2E 0D D1 2D E9 80 01 04 46 0D 46 16 46
    1F 46 C8 F7 81 FB 20 46 29 46 32 46 3B 46 BD E8
    80 01 14 69 01 22 A0 47 70 BD
    "EARM"
end    

:riproc
hex
    10 B5 04 1C 04 F0 4A F8 20 68 02 68 41 68 83 68
    0C 30 20 60 1B 48 00 68 1B 18 1B 4C 22 B9 41 F2
    03 42 04 20 A0 47 10 BD 01 2A 04 D1 41 F2 03 42
    05 20 A0 47 10 BD 02 2A 04 D1 41 F2 03 42 06 20
    A0 47 10 BD 03 2A 0E D1 60 B4 5E 18 0D 1C 00 2D
    07 D3 33 1C 41 F2 03 42 04 21 06 20 A0 47 04 3D
    F5 E7 60 BC 10 BD 04 2A 04 D1 41 F2 03 42 01 20
    A0 47 10 BD 05 2A 03 D1 41 F2 03 42 03 20 A0 47
    10 BD
    "EARM"
end 

:riproc200
hex
    10 B5 04 1C 05 F0 A2 F9 20 68 02 68 41 68 83 68
    0C 30 20 60 1B 48 00 68 1B 18 1B 4C 22 B9 41 F2
    03 42 04 20 A0 47 10 BD 01 2A 04 D1 41 F2 03 42
    05 20 A0 47 10 BD 02 2A 04 D1 41 F2 03 42 06 20
    A0 47 10 BD 03 2A 0E D1 60 B4 5E 18 0D 1C 00 2D
    07 D3 33 1C 41 F2 03 42 04 21 06 20 A0 47 04 3D
    F5 E7 60 BC 10 BD 04 2A 04 D1 41 F2 03 42 01 20
    A0 47 10 BD 05 2A 03 D1 41 F2 03 42 03 20 A0 47
    10 BD
    "EARM"
end

:rnoiproc
hex
    10 B5 04 1C 03 F0 44 FF 20 68 02 68 41 68 83 68
    0C 30 20 60 15 4C 1A B9 1A 1C 04 20 A0 47 10 BD
    01 2A 03 D1 1A 1C 05 20 A0 47 10 BD 02 2A 03 D1
    1A 1C 06 20 A0 47 10 BD 03 2A 0B D1 60 B4 0D 1C
    1E 1C 2E B1 04 3E 04 22 A9 19 06 20 A0 47 F8 E7
    60 BC 10 BD 04 2A 03 D1 1A 1C 01 20 A0 47 10 BD
    05 2A 02 D1 1A 1C 03 20 A0 47 10 BD
    "EARM"
end

:rnoiproc200
hex
    10 B5 04 1C 05 F0 8C F8 20 68 02 68 41 68 83 68
    0C 30 20 60 15 4C 1A B9 1A 1C 04 20 A0 47 10 BD
    01 2A 03 D1 1A 1C 05 20 A0 47 10 BD 02 2A 03 D1
    1A 1C 06 20 A0 47 10 BD 03 2A 0B D1 60 B4 0D 1C
    1E 1C 2E B1 04 3E 04 22 A9 19 06 20 A0 47 F8 E7
    60 BC 10 BD 04 2A 03 D1 1A 1C 01 20 A0 47 10 BD
    05 2A 02 D1 1A 1C 03 20 A0 47 10 BD
    "EARM"
end

:sdn
hex
    70 B5 04 1C 17 4D 18 4E 29 1C 8C 22 D0 F7 86 EA
    00 28 02 D1 31 78 00 29 22 D0 8C 22 21 1C 28 1C
    D0 F7 7A EB 33 78 00 20 30 70 10 48 06 68 D6 F8
    74 52 0D 22 2A 60 6B 60 08 35 28 1C 21 1C 8C 22
    D0 F7 6A EB 8C 35 C6 F8 70 52 C6 F8 74 52 05 F5
    80 63 D6 F8 64 22 9A 42 02 D2 30 1C FF F7 4E F9
    70 BD
    "EARM"
end

:ris
hex
    0D 49 0A 68 90 42 15 D0 08 60 0C 49 09 68 D1 F8
    74 22 05 23 13 60 50 60 08 32 C1 F8 70 22 C1 F8
    74 22 02 F5 80 63 D1 F8 64 22 9A 42 02 D2 08 1C
    FF F7 5E BB 70 47
    "EARM"
end

:ris200
hex
    0D 49 0A 68 90 42 15 D0 08 60 0C 49 09 68 D1 F8
    74 22 05 23 13 60 50 60 08 32 C1 F8 70 22 C1 F8
    74 22 02 F5 80 63 D1 F8 64 22 9A 42 02 D2 08 1C
    FF F7 B0 B9 70 47
    "EARM"
end

:rvs
hex
    0E 49 0A 68 90 42 18 D0 08 60 0D 49 01 22 0A 70
    0C 49 09 68 D1 F8 74 22 00 23 13 60 50 60 08 32
    C1 F8 74 22 C1 F8 70 22 02 F5 80 63 D1 F8 64 22
    9A 42 02 D2 08 1C FF F7 5B BD 70 47
    "EARM"
end

:rvs200
hex
    0E 49 0A 68 90 42 18 D0 08 60 0D 49 01 22 0A 70
    0C 49 09 68 D1 F8 74 22 00 23 13 60 50 60 08 32
    C1 F8 74 22 C1 F8 70 22 02 F5 80 63 D1 F8 64 22
    9A 42 02 D2 08 1C FF F7 EF BC 70 47
    "EARM"
end


:dnix
hex
    70 B5 0C 1C 15 1C 1E 1C 03 68 1B 69 98 47 0B 48
    00 68 D0 F8 74 12 0F 22 0A 60 4C 60 8D 60 CE 60
    10 31 C0 F8 74 12 C0 F8 70 12 01 F5 80 63 D0 F8
    64 22 9A 42 01 D2 FE F7 DF FF 70 BD
    "EARM"
end

:dnix200
hex
    70 B5 0C 1C 15 1C 1E 1C 03 68 9B 69 98 47 0B 48
    00 68 D0 F8 74 12 0F 22 0A 60 4C 60 8D 60 CE 60
    10 31 C0 F8 74 12 C0 F8 70 12 01 F5 80 63 D0 F8
    64 22 9A 42 01 D2 FE F7 3D FE 70 BD
    "EARM"
end

:dix
hex
    70 B5 0C 1C 15 1C 1E 1C 03 68 1B 69 98 47 0B 48 
    00 68 D0 F8 74 12 0E 22 0A 60 4C 60 8D 60 CE 60 
    10 31 C0 F8 74 12 C0 F8 70 12 01 F5 80 63 D0 F8
    64 22 9A 42 01 D2 FF F7 5D F8 70 BD
    "EARM"
end

:dix200
hex
    70 B5 0C 1C 15 1C 1E 1C 03 68 9B 69 98 47 0B 48
    00 68 D0 F8 74 12 0E 22 0A 60 4C 60 8D 60 CE 60 
    10 31 C0 F8 74 12 C0 F8 70 12 01 F5 80 63 D0 F8
    64 22 9A 42 01 D2 FE F7 AD FE 70 BD
    "EARM"
end

:utw
hex      
    2D E9 F0 41 04 1C 71 4D 2D 68 D5 F8 74 32 D5 F8
    64 22 03 F5 80 63 9A 42 02 D2 28 1C 04 F0 CE FE
    D5 F8 74 62 05 F5 1D 77 11 20 30 60 74 60 08 36
    3E 60 00 23 22 1C 10 7A 00 28 39 D0 10 79 B0 F1
    FF 3F 33 D0 D0 69 01 28 07 D1 00 20 30 60 73 60
    D0 68 B0 60 0C 36 3E 60 28 E0 02 28 09 D1 01 20
    30 60 73 60 D0 68 B0 60 10 69 F0 60 10 36 3E 60
    1C E0 03 28 0B D1 02 20 30 60 73 60 D0 68 B0 60
    10 69 F0 60 50 69 30 61 14 36 3E 60 0E E0 04 28
    0C D1 03 20 30 60 73 60 D0 68 B0 60 10 69 F0 60
    50 69 30 61 90 69 70 61 18 36 3E 60 00 20 10 72
    01 33 1C 32 18 2B BE D1 00 23 04 F5 28 72 10 7A
    00 28 2A D0 10 79 B0 F1 FF 3F 24 D0 05 20 30 60
    73 60 D0 68 B0 60 10 69 F0 60 50 69 30 61 90 69
    70 61 D0 69 B0 61 10 6A F0 61 50 6A 30 62 90 6A
    70 62 D0 6A B0 62 10 6B F0 62 50 6B 30 63 90 6B
    70 63 D0 6B B0 63 10 6C F0 63 50 6C 30 64 90 6C
    70 64 48 36 3E 60 00 20 10 72 01 33 4C 32 03 2B
    CD D1 04 F5 61 72 10 7A 00 28 2B D0 10 79 B0 F1
    FF 3F 25 D0 04 20 30 60 03 20 70 60 D0 68 B0 60
    10 69 F0 60 50 69 30 61 90 69 70 61 D0 69 B0 61
    10 6A F0 61 50 6A 30 62 90 6A 70 62 D0 6A B0 62
    10 6B F0 62 50 6B 30 63 90 6B 70 63 D0 6B B0 63
    10 6C F0 63 50 6C 30 64 90 6C 70 64 48 36 3E 60
    00 20 10 72 13 4A 10 78 68 B1 07 20 30 60 00 20
    70 60 50 68 B0 60 90 68 F0 60 D0 68 30 61 10 69
    70 61 18 36 3E 60 08 20 30 60 04 36 3E 60 C5 F8 
    70 62 BD E8 F0 81
    "EARM"
end

:utw200
hex      
    2D E9 F0 41 04 1C 71 4D 2D 68 D5 F8 74 32 D5 F8
    64 22 03 F5 80 63 9A 42 02 D2 28 1C 04 F0 CE FE
    D5 F8 74 62 05 F5 1D 77 11 20 30 60 74 60 08 36
    3E 60 00 23 22 1C 10 7A 00 28 39 D0 10 79 B0 F1
    FF 3F 33 D0 D0 69 01 28 07 D1 00 20 30 60 73 60
    D0 68 B0 60 0C 36 3E 60 28 E0 02 28 09 D1 01 20
    30 60 73 60 D0 68 B0 60 10 69 F0 60 10 36 3E 60
    1C E0 03 28 0B D1 02 20 30 60 73 60 D0 68 B0 60
    10 69 F0 60 50 69 30 61 14 36 3E 60 0E E0 04 28
    0C D1 03 20 30 60 73 60 D0 68 B0 60 10 69 F0 60
    50 69 30 61 90 69 70 61 18 36 3E 60 00 20 10 72
    01 33 1C 32 18 2B BE D1 00 23 04 F5 28 72 10 7A
    00 28 2A D0 10 79 B0 F1 FF 3F 24 D0 05 20 30 60
    73 60 D0 68 B0 60 10 69 F0 60 50 69 30 61 90 69
    70 61 D0 69 B0 61 10 6A F0 61 50 6A 30 62 90 6A
    70 62 D0 6A B0 62 10 6B F0 62 50 6B 30 63 90 6B
    70 63 D0 6B B0 63 10 6C F0 63 50 6C 30 64 90 6C
    70 64 48 36 3E 60 00 20 10 72 01 33 4C 32 03 2B
    CD D1 04 F5 61 72 10 7A 00 28 2B D0 10 79 B0 F1
    FF 3F 25 D0 04 20 30 60 03 20 70 60 D0 68 B0 60
    10 69 F0 60 50 69 30 61 90 69 70 61 D0 69 B0 61
    10 6A F0 61 50 6A 30 62 90 6A 70 62 D0 6A B0 62
    10 6B F0 62 50 6B 30 63 90 6B 70 63 D0 6B B0 63
    10 6C F0 63 50 6C 30 64 90 6C 70 64 48 36 3E 60
    00 20 10 72 13 4A 10 78 68 B1 07 20 30 60 00 20
    70 60 50 68 B0 60 90 68 F0 60 D0 68 30 61 10 69
    70 61 18 36 3E 60 08 20 30 60 04 36 3E 60 C5 F8 
    70 62 BD E8 F0 81
    "EARM"
end

:cmp4mtx
hex
    02 68 0B 68 9A 42 3D D1 02 69 0B 69 9A 42 39 D1
    02 6A 0B 6A 9A 42 35 D1 02 6B 0B 6B 9A 42 31 D1
    42 68 4B 68 9A 42 2D D1 42 69 4B 69 9A 42 29 D1
    42 6A 4B 6A 9A 42 25 D1 42 6B 4B 6B 9A 42 21 D1
    82 68 8B 68 9A 42 1D D1 82 69 8B 69 9A 42 19 D1
    82 6A 8B 6A 9A 42 15 D1 82 6B 8B 6B 9A 42 11 D1
    C2 68 CB 68 9A 42 0D D1 C2 69 CB 69 9A 42 09 D1
    C2 6A CB 6A 9A 42 05 D1 C2 6B CB 6B 9A 42 01 D1
    00 20 70 47 01 20 70 47
    "EARM"
end

:glValueable
hex
    2D E9 F0 41 21 4C 24 68 14 B1 21 4C 24 68 0D E0
    D0 F8 94 40 14 B9 1F 4C 24 68 07 E0 D0 F8 80 40
    04 2C 02 D0 1C 4C 24 68 00 E0 F4 E7 05 1C 68 6D
    03 28 02 D0 4F F0 7E 50 04 E0 10 B1 4F F0 88 40
    00 E0 F7 E7 15 49 08 60 26 68 15 49 0E 60 27 6A
    D7 F8 00 80 40 46 30 B1 33 1C FA 68 B9 68 78 68
    C0 47 10 37 F4 E7 BD E8 F0 81
    "EARM"
end

:matgl
hex
    70 B5 04 1C 0D 1C 1E 1C A8 47 90 F8 40 10 41 B1
    02 1C 21 1C 30 1C 16 1C 64 F7 36 F8 00 21 86 F8
    40 10 70 BD
    "EARM"
end

:matgl200
hex
    70 B5 04 1C 0D 1C 1E 1C A8 47 90 F8 40 10 41 B1
    02 1C 21 1C 30 1C 16 1C 55 F7 A8 FE 00 21 86 F8
    40 10 70 BD
    "EARM"
end

:matgl210
hex
    70 B5 04 1C 0D 1C 1E 1C A8 47 90 F8 40 10 41 B1
    02 1C 21 1C 30 1C 16 1C 55 F7 8C FE 00 21 86 F8
    40 10 70 BD
    "EARM"
end

:vecgl
hex
    70 B5 04 1C 15 1C 1E 1C 08 1C 2B 1C 02 1C 21 1C
    30 1C 64 F7 7F FA 70 BD
    "EARM"
end

:vecgl200
hex
    70 B5 04 1C 15 1C 1E 1C 08 1C 2B 1C 02 1C 21 1C
    30 1C 55 F7 E7 FD 70 BD
    "EARM"
end

:vecgl210
hex
    70 B5 04 1C 15 1C 1E 1C 08 1C 2B 1C 02 1C 21 1C
    30 1C 55 F7 CB FD 70 BD
    "EARM"
end

:bonegl
hex
    70 B5 18 1C 05 49 09 68 39 B1 05 49 09 68 21 B1
    03 23 59 43 03 4A 64 F7 19 FB 70 BD
    "EARM"
end

:bonegl200
hex
    70 B5 18 1C 05 49 09 68 39 B1 05 49 09 68 21 B1
    03 23 59 43 03 4A 55 F7 BD FE 70 BD
    "EARM"
end

:bonegl210
hex
    70 B5 18 1C 05 49 09 68 39 B1 05 49 09 68 21 B1
    03 23 59 43 03 4A 55 F7 A1 FE 70 BD
    "EARM"
end

:smdv
hex
    10 B5 04 4C 01 21 21 60 AE F7 F4 F8 00 21 21 60
    10 BD
    "EARM"
end

:smdv200
hex
    10 B5 04 4C 01 21 21 60 A9 F7 77 FC 00 21 21 60
    10 BD
    "EARM"
end

:smdv210
hex
    10 B5 04 4C 01 21 21 60 A9 F7 5F FC 00 21 21 60
    10 BD
    "EARM"
end

:assimod
hex 
    03 49 09 68 09 B1 00 F0 05 B8 57 F4 95 BE
    "EARM"
end    

:assimod200
hex 
    03 49 09 68 09 B1 00 F0 05 B8 09 F4 57 B9
    "EARM"
end    
     
:assimod210
hex 
    03 49 09 68 09 B1 00 F0 05 B8 09 F4 DF B8
    "EARM"
end    

:CMDNORMAL
hex
    70 B5 0B 4D E8 63 29 64 6A 64 AB 64 E9 68 2E 69
    6E 61 D1 F8 BC 40 68 69 30 F8 02 1B 54 F8 21 20
    68 61 28 1C 90 47 01 28 F5 D1 E8 6B 70 BD
    "EARM"
end
          
:CMDONFNC
hex
    70 B5 09 4D E8 63 E9 68 2E 69 6E 61 D1 F8 BC 40
    68 69 30 F8 02 1B 54 F8 21 20 68 61 28 1C 90 47
    01 28 F5 D1 70 BD
    "EARM"
end     
    
:newOrtho
hex
    F0 B5 8B B0 08 EE 10 2A F7 EE C8 0A CD ED 00 0B
    08 EE 10 3A F7 EE C8 0A CD ED 02 0B 08 EE 10 1A
    F7 EE C8 0A 53 EC 30 2B 08 EE 10 0A F7 EE C8 0A
    51 EC 30 0B 9D ED 10 8A F7 EE C8 0A CD ED 04 0B
    9D ED 11 8A F7 EE C8 0A CD ED 06 0B 51 F7 4A FE
    0B B0 F0 BD
    "EARM"
end

:newOrtho200
hex
    F0 B5 8B B0 08 EE 10 2A F7 EE C8 0A CD ED 00 0B
    08 EE 10 3A F7 EE C8 0A CD ED 02 0B 08 EE 10 1A
    F7 EE C8 0A 53 EC 30 2B 08 EE 10 0A F7 EE C8 0A
    51 EC 30 0B 9D ED 10 8A F7 EE C8 0A CD ED 04 0B
    9D ED 11 8A F7 EE C8 0A CD ED 06 0B 41 F7 87 FE
    0B B0 F0 BD
    "EARM"
end

:newOrtho210
hex
    F0 B5 8B B0 08 EE 10 2A F7 EE C8 0A CD ED 00 0B
    08 EE 10 3A F7 EE C8 0A CD ED 02 0B 08 EE 10 1A
    F7 EE C8 0A 53 EC 30 2B 08 EE 10 0A F7 EE C8 0A
    51 EC 30 0B 9D ED 10 8A F7 EE C8 0A CD ED 04 0B
    9D ED 11 8A F7 EE C8 0A CD ED 06 0B 41 F7 6F FE
    0B B0 F0 BD
    "EARM"
end

:frustum
hex
    F0 B5 8B B0 08 EE 10 2A F7 EE C8 0A CD ED 00 0B
    08 EE 10 3A F7 EE C8 0A CD ED 02 0B 08 EE 10 1A
    F7 EE C8 0A 53 EC 30 2B 08 EE 10 0A F7 EE C8 0A
    51 EC 30 0B 9D ED 10 8A F7 EE C8 0A CD ED 04 0B
    9D ED 11 8A F7 EE C8 0A CD ED 06 0B 51 F7 02 FD
    0B B0 F0 BD
    "EARM"
end

:frustum200
hex
    F0 B5 8B B0 08 EE 10 2A F7 EE C8 0A CD ED 00 0B
    08 EE 10 3A F7 EE C8 0A CD ED 02 0B 08 EE 10 1A
    F7 EE C8 0A 53 EC 30 2B 08 EE 10 0A F7 EE C8 0A
    51 EC 30 0B 9D ED 10 8A F7 EE C8 0A CD ED 04 0B
    9D ED 11 8A F7 EE C8 0A CD ED 06 0B 41 F7 52 FE
    0B B0 F0 BD
    "EARM"
end

:frustum210
hex
    F0 B5 8B B0 08 EE 10 2A F7 EE C8 0A CD ED 00 0B
    08 EE 10 3A F7 EE C8 0A CD ED 02 0B 08 EE 10 1A
    F7 EE C8 0A 53 EC 30 2B 08 EE 10 0A F7 EE C8 0A
    51 EC 30 0B 9D ED 10 8A F7 EE C8 0A CD ED 04 0B
    9D ED 11 8A F7 EE C8 0A CD ED 06 0B 41 F7 3A FE
    0B B0 F0 BD
    "EARM"
end

:tenGL
hex
    70 B5 86 B0 01 68 0D 46 4A 69 00 92 8A 69 01 92
    CA 69 02 92 0A 6A 03 92 4A 6A 04 92 8A 6A 05 92
    01 F1 2C 01 01 60 2C 68 2B 69 EA 68 A9 68 68 68
    A0 47 06 B0 70 BD "EARM"
end

:pgl
hex
    2D E9 F0 41 88 B0 00 AF 80 46 04 68 25 68 66 68
    08 34 04 60 00 2D 00 D1 34 E0 01 2D 01 D1 04 25
    2B E0 02 2D 01 D1 08 25 26 E0 03 2D 01 D1 0C 25
    21 E0 04 2D 01 D1 10 25 1C E0 05 2D 01 D1 14 25
    16 E0 06 2D 01 D1 18 25 10 E0 07 2D 01 D1 1C 25
    0A E0 08 2D 01 D1 20 25 04 E0 09 2D 12 D1 24 25
    20 6A 38 61 E0 69 F8 60 A0 69 B8 60 60 69 78 60
    20 69 38 60 E3 68 A2 68 61 68 20 68 64 19 C8 F8
    00 40 B0 47 20 37 BD 46 BD E8 F0 81
    "EARM"
end

:hgl
hex
    0B 9E A6 62 0A 9E 66 62 09 9E 26 62 08 9E E6 61
    07 9E A6 61 06 9E 66 61 23 61 E2 60 A1 60 60 60
    25 60 3A 1C 21 1C 8F 20 26 6C B0 47 BD E8 F0 81
    "EARM"
end

:rgl
hex
    2D E9 F0 41
    2B 4C 24 68 D4 F8 40 42 00 25 02 27 ED E7
    2D E9 F0 41
    27 4C 24 68 D4 F8 40 42 01 25 03 27 E3 E7
    2D E9 F0 41
    22 4C 24 68 D4 F8 40 42 02 25 04 27 D9 E7
    2D E9 F0 41
    1E 4C 24 68 D4 F8 40 42 03 25 05 27 CF E7
    2D E9 F0 41
    19 4C 24 68 D4 F8 40 42 04 25 06 27 C4 E7
    2D E9 F0 41
    15 4C 24 68 D4 F8 40 42 05 25 07 27 B9 E7
    2D E9 F0 41
    10 4C 24 68 D4 F8 40 42 06 25 08 27 AE E7
    2D E9 F0 41
    0C 4C 24 68 D4 F8 40 42 07 25 09 27 A3 E7
    2D E9 F0 41
    07 4C 24 68 D4 F8 40 42 08 25 0A 27 98 E7
    2D E9 F0 41
    03 4C 24 68 D4 F8 40 42 09 25 0B 27 8D E7
    "EARM"
end          

:bindTex
hex
    2D E9 F0 47 4F F0 00 04 14 4D 15 4E 15 4F DF F8
    58 80 DF F8 58 90 4F F0 04 03 04 FB 03 F3 55 F8 
    03 A0 BA F1 00 0F 11 D0 F1 58 8A 45 0E D0 46 F8
    03 A0 39 68 A1 42 05 D0 04 F5 04 40 00 F1 C0 00
    C0 47 3C 60 40 F6 E1 50 51 46 C8 47 04 F1 01 04
    20 2C 00 D0 DF E7 BD E8 F0 87 
    "EARM"
end

:Queue
hex
    0D 4B 1B 68 D3 F8 74 32 18 60 04 33 2A B1 51 F8
    04 0B 43 F8 04 0B 01 3A F8 E7 07 48 00 68 C0 F8 
    74 32 C0 F8 70 32 D0 F8 64 12 03 F5 80 63 99 42 
    01 D2 FA F7 29 BD 70 47 "EARM"
end

:Queue200
hex
    0D 4B 1B 68 D3 F8 74 32 18 60 04 33 2A B1 51 F8
    04 0B 43 F8 04 0B 01 3A F8 E7 07 48 00 68 C0 F8 
    74 32 C0 F8 70 32 D0 F8 64 12 03 F5 80 63 99 42 
    01 D2 FA F7 D7 BF 70 47 "EARM"
end

:Queue210
hex
    0D 4B 1B 68 D3 F8 74 32 18 60 04 33 2A B1 51 F8
    04 0B 43 F8 04 0B 01 3A F8 E7 07 48 00 68 C0 F8 
    74 32 C0 F8 70 32 D0 F8 64 12 03 F5 80 63 99 42 
    01 D2 FA F7 D7 BF 70 47 "EARM"
end

:operator
hex
    {00000000} {and(int, int)}
    {00000000} 08 40    { ANDS            R0, R1 } 
    {00000002} 70 47    { BX              LR }
    {00000004} {or(int, int)}
    {00000004} 08 43    { ORRS            R0, R1 }
    {00000006} 70 47    { BX              LR }    
    {00000008} {xor(int, int)}
    {00000008} 48 40    { EORS            R0, R1 }
    {0000000A} 70 47    { BX              LR }
    {0000000C} {not(int, int)}
    {0000000C} C0 43    { MVNS            R0, R0 }
    {0000000E} 70 47    { BX              LR }    
    {00000010} {shr(int, int)}
    {00000010} C8 40    { LSRS            R0, R1 }
    {00000012} 70 47    { BX              LR }    
    {00000014} {shl(int, int)}
    {00000014} 88 40    { LSLS            R0, R1 }
    {00000016} 70 47    { BX              LR }
    "EARM"
end




/* Buffer Manager */





:indohex
hex
    89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 02 C8 00 00 02 00 08 02 00 00 00 10 72 0D F8 00 00 18 53 49 44 41 54 78 5E ED D6 B1 09 C0 40 10 03 C1 EB BF 22 77 F7 6E 62 13 C1 18 C7 E2 19 2E D8 FB EE FC 04 08 10 20 40 80 00 81 44 40 55 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 24 73 8C 10 20 40 80 00 01 02 D3 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 D3 79 E5 F1 04 08 10 20 40 80 40 22 20 2C 08 10 20 40 80 00 01 02 99 40 36 94 64 8E 11 02 04 08 10 20 40 60 5A 40 58 10 20 40 80 00 01 02 04 32 81 6C 68 3A AF 3C 9E 00 01 02 04 08 10 48 04 84 05 01 02 04 08 10 20 40 20 13 C8 86 92 CC 31 42 80 00 01 02 04 08 4C 0B 08 0B 02 04 08 10 20 40 80 40 26 90 0D 4D E7 95 C7 13 20 40 80 00 01 02 89 80 B0 20 40 80 00 01 02 04 08 64 02 D9 50 92 39 46 08 10 20 40 80 00 81 69 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 E9 BC F2 78 02 04 08 10 20 40 20 11 10 16 04 08 10 20 40 80 00 81 4C 20 1B 4A 32 C7 08 01 02 04 08 10 20 30 2D 20 2C 08 10 20 40 80 00 01 02 99 40 36 34 9D 57 1E 4F 80 00 01 02 04 08 24 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 49 E6 18 21 40 80 00 01 02 04 A6 05 84 05 01 02 04 08 10 20 40 20 13 C8 86 A6 F3 CA E3 09 10 20 40 80 00 81 44 40 58 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 24 73 8C 10 20 40 80 00 01 02 D3 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 D3 79 E5 F1 04 08 10 20 40 80 40 22 20 2C 08 10 20 40 80 00 01 02 99 40 36 94 64 8E 11 02 04 08 10 20 40 60 5A 40 58 10 20 40 80 00 01 02 04 32 81 6C 68 3A AF 3C 9E 00 01 02 04 08 10 48 04 84 05 01 02 04 08 10 20 40 20 13 C8 86 92 CC 31 42 80 00 01 02 04 08 4C 0B 08 0B 02 04 08 10 20 40 80 40 26 90 0D 4D E7 95 C7 13 20 40 80 00 01 02 89 80 B0 20 40 80 00 01 02 04 08 64 02 D9 50 92 39 46 08 10 20 40 80 00 81 69 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 E9 BC F2 78 02 04 08 10 20 40 20 11 10 16 04 08 10 20 40 80 00 81 4C 20 1B 4A 32 C7 08 01 02 04 08 10 20 30 2D 20 2C 08 10 20 40 80 00 01 02 99 40 36 34 9D 57 1E 4F 80 00 01 02 04 08 24 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 49 E6 18 21 40 80 00 01 02 04 A6 05 84 05 01 02 04 08 10 20 40 20 13 C8 86 A6 F3 CA E3 09 10 20 40 80 00 81 44 40 58 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 24 73 8C 10 20 40 80 00 01 02 D3 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 D3 79 E5 F1 04 08 10 20 40 80 40 22 20 2C 08 10 20 40 80 00 01 02 99 40 36 94 64 8E 11 02 04 08 10 20 40 60 5A 40 58 10 20 40 80 00 01 02 04 32 81 6C 68 3A AF 3C 9E 00 01 02 04 08 10 48 04 84 05 01 02 04 08 10 20 40 20 13 C8 86 92 CC 31 42 80 00 01 02 04 08 4C 0B 08 0B 02 04 08 10 20 40 80 40 26 90 0D 4D E7 95 C7 13 20 40 80 00 01 02 89 80 B0 20 40 80 00 01 02 04 08 64 02 D9 50 92 39 46 08 10 20 40 80 00 81 69 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 E9 BC F2 78 02 04 08 10 20 40 20 11 10 16 04 08 10 20 40 80 00 81 4C 20 1B 4A 32 C7 08 01 02 04 08 10 20 30 2D 20 2C 08 10 20 40 80 00 01 02 99 40 36 34 9D 57 1E 4F 80 00 01 02 04 08 24 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 49 E6 18 21 40 80 00 01 02 04 A6 05 84 05 01 02 04 08 10 20 40 20 13 C8 86 A6 F3 CA E3 09 10 20 40 80 00 81 44 40 58 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 24 73 8C 10 20 40 80 00 01 02 D3 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 D3 79 E5 F1 04 08 10 20 40 80 40 22 20 2C 08 10 20 40 80 00 01 02 99 40 36 94 64 8E 11 02 04 08 10 20 40 60 5A 40 58 10 20 40 80 00 01 02 04 32 81 6C 68 3A AF 3C 9E 00 01 02 04 08 10 48 04 84 05 01 02 04 08 10 20 40 20 13 C8 86 92 CC 31 42 80 00 01 02 04 08 4C 0B 08 0B 02 04 08 10 20 40 80 40 26 90 0D 4D E7 95 C7 13 20 40 80 00 01 02 89 80 B0 20 40 80 00 01 02 04 08 64 02 D9 50 92 39 46 08 10 20 40 80 00 81 69 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 E9 BC F2 78 02 04 08 10 20 40 20 11 10 16 04 08 10 20 40 80 00 81 4C 20 1B 4A 32 C7 08 01 02 04 08 10 20 30 2D 20 2C 08 10 20 40 80 00 01 02 99 40 36 34 9D 57 1E 4F 80 00 01 02 04 08 24 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 49 E6 18 21 40 80 00 01 02 04 A6 05 84 05 01 02 04 08 10 20 40 20 13 C8 86 A6 F3 CA E3 09 10 20 40 80 00 81 44 40 58 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 24 73 8C 10 20 40 80 00 01 02 D3 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 D3 79 E5 F1 04 08 10 20 40 80 40 22 20 2C 08 10 20 40 80 00 01 02 99 40 36 94 64 8E 11 02 04 08 10 20 40 60 5A 40 58 10 20 40 80 00 01 02 04 32 81 6C 68 3A AF 3C 9E 00 01 02 04 08 10 48 04 84 05 01 02 04 08 10 20 40 20 13 C8 86 92 CC 31 42 80 00 01 02 04 08 4C 0B 08 0B 02 04 08 10 20 40 80 40 26 90 0D 4D E7 95 C7 13 20 40 80 00 01 02 89 80 B0 20 40 80 00 01 02 04 08 64 02 D9 50 92 39 46 08 10 20 40 80 00 81 69 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 E9 BC F2 78 02 04 08 10 20 40 20 11 10 16 04 08 10 20 40 80 00 81 4C 20 1B 4A 32 C7 08 01 02 04 08 10 20 30 2D 20 2C 08 10 20 40 80 00 01 02 99 40 36 34 9D 57 1E 4F 80 00 01 02 04 08 24 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 49 E6 18 21 40 80 00 01 02 04 A6 05 84 05 01 02 04 08 10 20 40 20 13 C8 86 A6 F3 CA E3 09 10 20 40 80 00 81 44 40 58 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 24 73 8C 10 20 40 80 00 01 02 D3 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 D3 79 E5 F1 04 08 10 20 40 80 40 22 20 2C 08 10 20 40 80 00 01 02 99 40 36 94 64 8E 11 02 04 08 10 20 40 60 5A 40 58 10 20 40 80 00 01 02 04 32 81 6C 68 3A AF 3C 9E 00 01 02 04 08 10 48 04 84 05 01 02 04 08 10 20 40 20 13 C8 86 92 CC 31 42 80 00 01 02 04 08 4C 0B 08 0B 02 04 08 10 20 40 80 40 26 90 0D 4D E7 95 C7 13 20 40 80 00 01 02 89 80 B0 20 40 80 00 01 02 04 08 64 02 D9 50 92 39 46 08 10 20 40 80 00 81 69 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 E9 BC F2 78 02 04 08 10 20 40 20 11 10 16 04 08 10 20 40 80 00 81 4C 20 1B 4A 32 C7 08 01 02 04 08 10 20 30 2D 20 2C 08 10 20 40 80 00 01 02 99 40 36 34 9D 57 1E 4F 80 00 01 02 04 08 24 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 49 E6 18 21 40 80 00 01 02 04 A6 05 84 05 01 02 04 08 10 20 40 20 13 C8 86 A6 F3 CA E3 09 10 20 40 80 00 81 44 40 58 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 24 73 8C 10 20 40 80 00 01 02 D3 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 D3 79 E5 F1 04 08 10 20 40 80 40 22 20 2C 08 10 20 40 80 00 01 02 99 40 36 94 64 8E 11 02 04 08 10 20 40 60 5A 40 58 10 20 40 80 00 01 02 04 32 81 6C 68 3A AF 3C 9E 00 01 02 04 08 10 48 04 84 05 01 02 04 08 10 20 40 20 13 C8 86 92 CC 31 42 80 00 01 02 04 08 4C 0B 08 0B 02 04 08 10 20 40 80 40 26 90 0D 4D E7 95 C7 13 20 40 80 00 01 02 89 80 B0 20 40 80 00 01 02 04 08 64 02 D9 50 92 39 46 08 10 20 40 80 00 81 69 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 E9 BC F2 78 02 04 08 10 20 40 20 11 10 16 04 08 10 20 40 80 00 81 4C 20 1B 4A 32 C7 08 01 02 04 08 10 20 30 2D 20 2C 08 10 20 40 80 00 01 02 99 40 36 34 9D 57 1E 4F 80 00 01 02 04 08 24 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 49 E6 18 21 40 80 00 01 02 04 A6 05 84 05 01 02 04 08 10 20 40 20 13 C8 86 A6 F3 CA E3 09 10 20 40 80 00 81 44 40 58 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 24 73 8C 10 20 40 80 00 01 02 D3 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 D3 79 E5 F1 04 08 10 20 40 80 40 22 20 2C 08 10 20 40 80 00 01 02 99 40 36 94 64 8E 11 02 04 08 10 20 40 60 5A 40 58 10 20 40 80 00 01 02 04 32 81 6C 68 3A AF 3C 9E 00 01 02 04 08 10 48 04 84 05 01 02 04 08 10 20 40 20 13 C8 86 92 CC 31 42 80 00 01 02 04 08 4C 0B 08 0B 02 04 08 10 20 40 80 40 26 90 0D 4D E7 95 C7 13 20 40 80 00 01 02 89 80 B0 20 40 80 00 01 02 04 08 64 02 D9 50 92 39 46 08 10 20 40 80 00 81 69 01 61 41 80 00 01 02 04 08 10 C8 04 B2 A1 E9 BC F2 78 02 04 08 10 20 40 20 11 10 16 04 08 10 20 40 80 00 81 4C 20 1B 4A 32 C7 08 01 02 04 08 10 20 30 2D 20 2C 08 10 20 40 80 00 01 02 99 40 36 34 9D 57 1E 4F 80 00 01 02 04 08 24 02 C2 82 00 01 02 04 08 10 20 90 09 64 43 49 E6 18 21 40 80 00 01 02 04 A6 05 84 05 01 02 04 08 10 20 40 20 13 C8 86 A6 F3 CA E3 09 10 20 40 80 00 81 44 40 58 10 20 40 80 00 01 02 04 32 81 6C 28 C9 1C 23 04 08 10 20 40 80 C0 B4 80 B0 20 40 80 00 01 02 04 08 64 02 D9 D0 74 5E 79 3C 01 02 04 08 10 20 90 08 08 0B 02 04 08 10 20 40 80 40 26 90 0D 25 99 63 84 00 01 02 04 08 10 98 16 10 16 04 08 10 20 40 80 00 81 4C 20 1B 9A CE 2B 8F 27 40 80 00 01 02 04 12 81 7B 3E 02 04 08 10 20 40 80 40 24 20 2C 22 48 33 04 08 10 20 40 80 C0 7B C2 C2 15 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 80 B0 C8 28 0D 11 20 40 80 00 01 02 C2 C2 0D 10 20 40 80 00 01 02 99 C0 0F 11 5D 30 32 9C 54 A8 9A 00 00 00 00 49 45 4E 44 AE 42 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
end

    /*
    //alphamodulate
    call.2r( @longPatch, 0x1A9654, @alph)
    0@ = operator.int(0x61B2E8, "+", g_libGTASA)
    ARM.memprotect2(0x1A9698, 0@, 4)
    
    0@ = operator.int(0x5D21D0, "+", g_libGTASA)
    0@ = script.getOffset(@aaab)
    ARM._(STR 1.0, 0@)
    ARM.memprotect2(0x1A969C, 0@, 4)
    0@ = operator.int(0x611A00, "+", g_libGTASA)
    ARM.memprotect2(0x1A96A0, 0@, 4)
      
    //blend mod shader
    call.2r( @longPatch, 0x1A96A4, @blndms)

    ARM.memprotect2(0x1A9654, 0x4770, 2) // disable alphamodulate for now
    */
    
    
    //sqrt
    //call.2r( @longPatch, 0x541548, @sqrf)
    
    /*
    // set normal alpha blend
    call.2r( @longPatch, 0x1C3770, @handleblend)
    0@ = operator.int(0x611868, "+", g_libGTASA)
    ARM.memprotect2(0x1C378C, 0@, 4)
    0@ = var.pointer(handleBlending)
    ARM.memprotect2(0x1C3790, 0@, 4)

    ARM.memprotect2(0x18627A, 0xFA79F03D, 4)
    ARM.memprotect2(0x1866E6, 0xF843F03D, 4)
    */

/*
    
    //Reinit Rq    
    ARM._(LDR 0@, $3173)
    0@ += 612
    ARM._(LDR 2@, 0@)
    0@ -= 0x04
    ARM._(LDR 3@, 0@)
    0062: 2@ -= 3@
    if 2@ < 0x700000
    then
        //Reinit Rq               
        ARM.memprotect2(0x1A7EF2, 0x00E0F44F, 4)
        ARM.memprotect2(0x1A7EF6, 0x00E0F44F, 4)
        ARM.memprotect2(0x1A7F34, 0x00E0F44F, 4)
        ARM.memprotect2(0x1A7F38, 0x00E0F44F, 4)
            
        0@ = operator.int(0x1A8739, "+", g_libGTASA)
        fastCall.0r(0@)
        
        call.1r( @logsetcurrent, @rq_isReload)
    end
*/    
